剑指 Offer 58 - II. 左旋转字符串

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

  示例 1:

    输入: s = "abcdefg", k = 2
    输出: "cdefgab"

==============================================================

左旋之前的字符串反转,左旋之后的字符串反转,之后整体反转

代码如下:

class Solution {
public:
    string reverseLeftWords(string s, int n) {
        char c;
        for (int i = 0; i < n / 2; i++) {
            c = s[i];
            s[i] = s[n - 1 - i];
            s[n - 1 - i] = c;
        }
        int num = (s.size() - n)/2+n;
        for (int i = n; i < num; i++) {
            c = s[i];
            s[i] = s[s.size()-1-i+n];
            s[s.size() - 1-i + n] = c;
        }
        for (int i = 0; i < s.size() / 2; i++) {
            c = s[i];
            s[i] = s[s.size() - 1 - i];
            s[s.size() - 1 - i] = c;
        }
        return s;
    }
};

看到题解中有个比较牛的思路,分享一下,用取余的思想,首先字符串拼接一个相同的字符串

      

 

我呆了,还可以这样玩。。。。

 

posted on 2022-01-10 21:37  4小旧  阅读(19)  评论(0)    收藏  举报

导航