给定一个字符串和一个偏移量,根据偏移量旋转字符串(从左向右旋转)
样例:对于字符串 "abcdefg".
offset=0 => "abcdefg"
offset=1 => "gabcdef"
offset=2 => "fgabcde"
offset=3 => "efgabcd"
挑战:在数组上原地旋转,使用O(1)的额外空间
分析:注意offset为0和str长度为0的情况,还有offset大于str的长度的情况。
题目代码:
class Solution {
public:
/**
* @param str: An array of char
* @param offset: An integer
* @return: nothing
*/
void rotateString(string &str, int offset) {
// write your code here
if(str.size()==0) return;
if(offset==0) return;
int offs=offset%str.size();
reverse(str.begin(),str.end());
reverse(str.begin(),str.begin()+offs);
reverse(str.begin()+offs,str.end());
}
};