题解 | #左旋转字符串#

左旋转字符串

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;
    }
};

全部评论

相关推荐

自由水:笑死了,敢这么面试不敢让别人说
点赞 评论 收藏
分享
06-16 15:04
黑龙江大学 Java
零OFFER战士:另一个版本查看图片
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-03 18:13
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务