题目:
将一个n元一维向量向左旋转i个位置。例如,当n=8且i=3时,向量abcdefgh旋转为defghabc。简单的代码使用一个n元的中间向量在n步内完成该工作。
思路:
首先对a求逆,得到(a^r)b,然后对b求逆,得到(a^r)(b^r),最后整体求逆,得到((a^r)(b^r))^r,此时得到的是ba。
代码:
#include <iostream>
#include <string>
using namespace std;
string s;
void reverse(int i,int j)
{
char temp;
do
{
temp = s[i];
s[i] = s[j];
s[j] = temp;
}while(++i < --j);
}
int main()
{
int n, i;
cin >> s;
cin >> i;
n = s.length();
reverse(0,i-1);
reverse(i,n-1);
reverse(0,n-1);
cout << s;
return 0;
}