给定一个字符串和一个偏移量,根据偏移量旋转字符串(从左向右旋转)
样例
对于字符串 "abcdefg"
.
offset=0 => "abcdefg"
offset=1 => "gabcdef"
offset=2 => "fgabcde"
offset=3 => "efgabcd"
class Solution {
public:
/**
* @param str: a string
* @param offset: an integer
* @return: nothing
*/
void rotateString(string &str,int offset){
if(str.empty())
return;
int len = str.length();
int off = offset % len;//求余避免offset>len情况
reverse(str, 0, len- off - 1);//翻转字符串前面n个字符
reverse(str, len-off, len - 1);//翻转字符串的后面部分
reverse(str, 0, len - 1);//翻转整个字符串
}
void reverse(string &str,int start,int end) { //翻转字符串
for (int i = start,j = end; i < j; i++, j--) {
char temp = str[i];
str[i] = str[j];
str[j] = temp;
}
}
};