给定一个字符串和一个偏移量,根据偏移量旋转字符串(从左向右旋转)
class Solution {
public:
/**
* @param str: a string
* @param offset: an integer
* @return: nothing
*/
void rotateString(string &A,int offset){
//wirte your code here
if(A.length() == 0)return ;
offset = offset % A.length();
for(int i = 0; i < A.length()/2; i++) {//整个字符串翻转
char c = A[i];
A[i] = A[A.length() - 1 - i];
A[A.length() - 1 - i] = c;
}
for(int i = 0; i < offset/2; i++) {//offset部分翻转
char c = A[i];
A[i] = A[offset - 1 - i];
A[offset - 1 - i] = c;
}
for(int i = 0; i < (A.length() - offset + 1)/2; i++) {//剩余部分翻转
char c = A[offset + i];
A[offset + i] = A[A.length() - 1 - i];
A[A.length() - 1 - i] = c;
}
}
};
思路这题用到了字符串的反转 可以通过三次反转达到效果