给定一个字符串(以字符数组的形式给出)和一个偏移量,根据偏移量原地旋转字符串(从左向右旋转)
样例
样例 1:
输入: str=“abcdefg”, offset = 3
输出: str = “efgabcd”
样例解释: 注意是原地旋转,即str旋转后为"efgabcd"
样例 2:
输入: str=“abcdefg”, offset = 0
输出: str = “abcdefg”
样例解释: 注意是原地旋转,即str旋转后为"abcdefg"
样例 3:
输入: str=“abcdefg”, offset = 1
输出: str = “gabcdef”
样例解释: 注意是原地旋转,即str旋转后为"gabcdef"
样例 4:
输入: str=“abcdefg”, offset =2
输出: str = “fgabcde”
样例解释: 注意是原地旋转,即str旋转后为"fgabcde"
样例 5:
输入: str=“abcdefg”, offset = 10
输出: str = “efgabcd”
样例解释: 注意是原地旋转,即str旋转后为"efgabcd"
挑战
在数组上原地旋转,使用O(1)的额外空间
注意事项
offset >= 0
str的长度 >= 0
#include<stdio.h>
#include<string.h>
int main()
{
int i,j,len,t;
char a[20];
gets(a);
scanf("%d",&t);
len=strlen(a);
char temp;
for(i=0;i<t;i++){
//控制偏移量
temp=a[len-1];
// 保存字符数组最后一个字符
for(j=len-1;j>=0;j--){
// 使出最后一个字符外元素后移一个
a[j]=a[j-1];
}
a[0]=temp;
}
puts(a);
return 0;
}