#include <stdio.h>
#include <string.h>
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
#define NMAX 1000
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
void RotateVector(char arr[], unsigned int index, unsigned int n);
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
int main()
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
{
char str[NMAX];
unsigned int i, n;
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
printf("Input a string for rotating left.\n");
fgets(str, NMAX, stdin);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
n = strlen(str) - 1;
str[n] = '\0';
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
printf("%d chars in the string.\n", n);
printf("How many position (i) to rotate?\n");
scanf("%u", &i);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
RotateVector(str, i, n);
printf("After rotated %d positions\n", i);
printf("%s\n", str);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
return 0;
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**//*Rotate the vector string arr by index positions.*/
void RotateVector(char arr[], unsigned int index, unsigned int n)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
{
unsigned int i, j;
char t;
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
index %= n;
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if (index == 0)
{
return;
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//*Reverse 'arr' in range between 0 and index-1*/
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
for(i = 0, j = index-1; i < j; i++, j--)
{
t = arr[i];
arr[i] = arr[j];
arr[j] = t;
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//*Reverse 'arr' in range between index and n-1*/
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
for(i = index, j = n-1; i < j; i++, j--)
{
t = arr[i];
arr[i] = arr[j];
arr[j] = t;
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//*Reverse 'arr' in range between 0 and n-1*/
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
for(i = 0, j = n-1; i < j; i++, j--)
{
t = arr[i];
arr[i] = arr[j];
arr[j] = t;
}
}
算法非常简单,也非常好实现,执行效率也很高,时间复杂度为O(n),空间复杂度仅为O(1) 。