#include<iostream>
using namespace std;
void reverseString(char str[], int left, int right)
{
int i = left;
int j = right;
char tmp;
while(i < j)
{
tmp = str[i];
str[i] = str[j];
str[j] = tmp;
// 用while时一定要注意循环体中的自增或自减
i++;
j--;
}
}
// 向左循环移动distance位
void leftLoopShift(char str[], int distance)
{
int length = strlen(str);
reverseString(str, 0, length - 1);
reverseString(str, 0, length - distance - 1);
reverseString(str, length - distance, length - 1);
}
int main()
{
char str[] = "1234567";
int distance = 2;
leftLoopShift(str, distance);
cout << str << endl;
return 0;
}
时间复杂度为O(n)的就地循环移位 (2010年全国计算机统考考研试题)
本文转载:CSDN博客