剑指 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   4小旧  阅读(10)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示