反转字符串 II

原题:

给定一个字符串 s 和一个整数 k,你需要对从字符串开头算起的每隔 2k 个字符的前 k 个字符进行反转。

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

示例:

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

提示:

  1. 该字符串只包含小写英文字母。
  2. 给定字符串的长度和 k[1, 10000] 范围内。

解题方法:

解法一:

class Solution {
public:
    string reverseStr(string s, int k) {
        int i=0,j=k-1;
        while(i<s.size())
        {
            if(j>=s.size()) j=s.size()-1;
            reversestr(i,j,s);
            i+=2*k;
            j+=2*k;
        }
        return  s;
    }

    void reversestr(int i,int j,string& s)
    {
        while(i<j)
        {
            swap(s[i],s[j]);
            i++;j--;
        }
    }

};

做题小结:

简单题。