定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部,如把字符串abcdef左旋转2位得到字符串cdefab。
请实现字符串左旋转的函数,要求对长度为n的字符串操作的时间复杂度为O(n),空间复杂度为O(1)。
#include<stdio.h>
#include<string.h>
void invert(char *str, int start, int end) {
int i,j,t;
for (i = start,j=end; i <=j; i++,j--) {
t = str[i];
str[i] = str[j];
str[j] = t;
}
}
int main() {
char str[] = "abcdefg";
int n = 2;
int len = strlen(str);
invert(str, 0, n-1);
invert(str, n, len-1);
invert(str, 0, len-1);
printf("%s", str);
}