1,普通算法:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void rotate_str(char* arr, int sz, int k)
{
while(k>0) //循环一次旋转一个字符
{
int i = 0;
char tmp = arr[0];//保存首字符
for(i = 0; i<sz-1;i++)
{
arr[i] = arr[i+1];
}
arr[sz-1] = tmp;//把首字符放在字符串的最后面
k--;
}
printf("%s",arr);
}
int main()
{
char arr[20] = {0};
scanf("%s",arr);
int sz = strlen(arr);
int k = 3; //要旋转的子符个数
rotate_str(arr, sz, k);
return 0;
}
2,三次翻转法
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void Reverse(char* left, char* right)//逆序字符串函数
{
while(left < right)
{
char tmp = *left;
*left = *right;
*right = tmp;
left++;
right--;
}
}
void rotate_str(char arr[], int sz, in