左旋转字符串

字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。

思路

s表示待左旋转的字符串,length表示整个字符串的长度,n表示前面若干个字符的个数,先把整个字符串反转,然后把s[0,length-n-1]和s[length-n-1,length-1]分别反转。

代码


class Solution {
public:
    void reverse(string& s,int left,int right) {
        while(left < right) {
            char tmp = s[left];
            s[left] = s[right];
            s[right] = tmp;
            left++;
            right--;
        }
    }
    string reverseLeftWords(string s, int n) {
        int len = s.length();
        reverse(s,0,len-1);
        reverse(s,0,len - n - 1);
        reverse(s,len - n,len - 1);
        return s;
    }
};
```cpp