#鹏哥C语言#P131
例如:
abcd左旋一个字符得到bcda
abcd左旋两个字符得到cdab
方法一:
代码展示:
#include <stdio.h>
#include<string.h>
void left_rotate(char arr[], int k)
{
int i=0;
int len = strlen(arr);
k %= len;
for(i = 0; i < k;i++)
{
// char tmp = arr[0];
int j = 0;
for(j = 0; j < len - 1;j++)
{
// arr[j]=arr[j + 1];
char tmp =arr[j];
arr[j] = arr[j+1];
arr[j+1]=tmp;
}
// arr[len - 1] = tmp;
}
}
int main()
{
char arr[] = "abcdefg";
int k=0;
scanf("%d",&k);
left_rotate(arr,k);
printf("%s\n",arr);
return 0;
}
运行结果展示:
方法二:
代码展示:
#include <stdio.h>
#include<string.h>
void reverse(char *left,char *right)
{
while(left<right)
{
char tmp=*left;
*left=*right;
*right=tmp;
right--;
left++;
}
}
void left_rotate(char arr[], int k)
{
int len = strlen(arr);
k %=len;
reverse(arr,arr+k-1);
reverse(arr+k,arr+len-1);
reverse(arr,arr+len-1);
}
int main()
{
char arr[] = "abcdefg";
int k=0;
scanf("%d",&k);
left_rotate(arr,k);
printf("%s\n",arr);
return 0;
}
运行结果展示: