题解 | #左旋转字符串#

左旋转字符串

https://www.nowcoder.com/practice/12d959b108cb42b1ab72cef4d36af5ec

//这题比较简单的做法是用额外的空间来做。但用原地空间进行操作才更有挑战。
//同样,只要把需要左移的部分字符串,和不需要左移的部分字符串,分别反转后,再反转整个字符串,即可完成。
class Solution {
  public:
    void reversestr(string &str,int begin,int end) {
        int j = 0;
        for (int i = begin; i < (begin+end)/2; i++) {
            swap(str[i], str[end - j - 1]);
            j++;
        }
    }
    string LeftRotateString(string str, int n) {
        if(str.empty())return str;
        if(str.size()<n)//如果左移的位数比str的size大
        {
            n=n%str.size();
        }
        reversestr(str,0, n);
        reversestr(str,n, str.size());
        reversestr(str,0, str.size());
        return str;
    }
};

全部评论

相关推荐

09-27 14:42
已编辑
浙江大学 Java
未来未临:把浙大放大加粗就行
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务