#include <stdio.h>
#include <string.h>

#define NMAX 1000

void RotateVector(char arr[], unsigned int index, unsigned int n);

int main()


{
char str[NMAX];
unsigned int i, n;

printf("Input a string for rotating left.\n");
fgets(str, NMAX, stdin);

n = strlen(str) - 1;
str[n] = '\0';

printf("%d chars in the string.\n", n);
printf("How many position (i) to rotate?\n");
scanf("%u", &i);

RotateVector(str, i, n);
printf("After rotated %d positions\n", i);
printf("%s\n", str);

return 0;
}


/**//*Rotate the vector string arr by index positions.*/
void RotateVector(char arr[], unsigned int index, unsigned int n)


{
unsigned int i, j;
char t;

index %= n;


if (index == 0)
{
return;
}


/**//*Reverse 'arr' in range between 0 and index-1*/

for(i = 0, j = index-1; i < j; i++, j--)
{
t = arr[i];
arr[i] = arr[j];
arr[j] = t;
}


/**//*Reverse 'arr' in range between index and n-1*/

for(i = index, j = n-1; i < j; i++, j--)
{
t = arr[i];
arr[i] = arr[j];
arr[j] = t;
}


/**//*Reverse 'arr' in range between 0 and n-1*/

for(i = 0, j = n-1; i < j; i++, j--)
{
t = arr[i];
arr[i] = arr[j];
arr[j] = t;
}
}
算法非常简单,也非常好实现,执行效率也很高,时间复杂度为O(n),空间复杂度仅为O(1) 。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步