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

力扣:541. 反转字符串 II

2023-04-12 19:30 作者:薄荷硬糖酱  | 我要投稿

541. 反转字符串 II

难度简单453

给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。

  • 如果剩余字符少于 k 个,则将剩余字符全部反转。

  • 如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。

 

示例 1:

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

示例 2:

输入:s = "abcd", k = 2输出:"bacd"

 

提示:

  • 1 <= s.length <= 104

  • s 仅由小写英文组成

  • 1 <= k <= 104


第一种法:

没有库函数,双指针法

class Solution {

public:

    string reverseStr(string s, int k) {

       int fast,slow;

       int len = s.size()-1;

       for(int i = 0;i<s.size();i+=2*k){

           fast = i,slow = min(i+k-1,len);

           if(fast>s.size()-1||slow>s.size()-1)return s;

           while(fast<slow){

                char tmp = s[fast];

                s[fast] = s[slow];

                s[slow] = tmp;

                fast++,slow--;

           }

       }

       return s;

    }

};

第二种法:

使用了库函数

class Solution {

public:

    string reverseStr(string s, int k) {

       for(int i=0;i<s.size();i+=(2*k)){

           if(i+k<=s.size()){

               reverse(s.begin()+i,s.begin()+i+k);

           }else{

               reverse(s.begin()+i,s.end());

           }

       }

       return s;

    }

};


力扣:541. 反转字符串 II的评论 (共 条)

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