题目分析:
例如,一个字符串12345abcdef,右移6位的话,变成abcdef12345。
由结果可以看出,被分成了两个部分,前面6个字符和后面5个字符没有改变,只有前半部分和后半部分整体交换。
于是我们可以使用划分子问题的思路来解决这个问题。
右移k位,则可以分成前面k位和后面len-k位,先对两个部分各自进行逆置,然后对两个部分合起来进行reverse。
代码实现:
#include<iostream>
using namespace std;
#include<math.h>
#include<string.h>
void Reverse(char* a, int left, int right)
{
for (; left < right; left++, right--)
{
char tmp = a[right];
a[right] = a[left];
a[left] = tmp;
}
}
int main()
{
int k;
char a[100];
gets(a);
int len