EchoDemo's Blogs

LintCode 旋转字符串

给定一个字符串和一个偏移量,根据偏移量旋转字符串(从左向右旋转)

样例:对于字符串 "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());
    }
};
🐶 您的支持将鼓励我继续创作 🐶
-------------本文结束感谢您的阅读-------------