欢迎光临散文网 会员登陆 & 注册

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

2023-04-13 13:54 作者:薄荷硬糖酱  | 我要投稿

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

难度简单383

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

 

示例 1:

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

示例 2:

输入: s = "lrloseumgh", k = 6输出: "umghlrlose"

 

限制:

  • 1 <= k < s.length <= 10000

通过次数455,690提交次数530,334

思路:

字符串反转,时间复杂度O(n),空间复杂度O(1)

先将整个字符串完全反转,然后再将前半部分和后半部分反转

class Solution {

public:

    void reverse(string& s,int start,int end){

        for(int i=start,j=end;i<j;i++,j--){

            swap(s[i],s[j]);

        }

    }

    string reverseLeftWords(string s, int n) {

        reverse(s,0,s.size()-1);

        reverse(s,0,s.size()-n-1);

        reverse(s,s.size()-n,s.size()-1);

        return s;

    }

};


力扣:剑指 Offer 58 - II. 左旋转字符串的评论 (共 条)

分享到微博请遵守国家法律