541. 反转字符串 II

541. 反转字符串 II

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

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

class Solution {
public:
    void reverse(string &s,int i,int j){
        char tmp;
        while(i<j){
            swap(s[i],s[j]);
            i++;
            j--;
        }
    }
    string reverseStr(string s, int k) {
        int length=s.size();
        for(int i=0;i<length;i+=2*k){
            reverse(s,i,min(i+k-1,length-1));
        }
        return s;
    }
};

你可能感兴趣的:(c++,字符串,数据结构,算法)