LeetCode第 541 题:反转字符串II(C++)

541. 反转字符串 II - 力扣(LeetCode)

和这个蛮像
LeetCode第 25 题:K 个一组翻转链表(C++)_qq_32523711的博客-CSDN博客

但是本题简单多了,数组操作比链表要考虑的东西少很多。

class Solution {
public:
    void reverse(string &s, int l, int r){
        while(l < r)
            swap(s[l++], s[r--]);
    }
    string reverseStr(string s, int k) {
        if(k == 0 || k == 1)    return s;
        int i = 0;
        for(; i+2*k < s.size(); i += 2*k){
            reverse(s, i, i+k-1);
        }
        if(i+k > s.size()){//剩余字符小于k个
            reverse(s, i, s.size()-1);
        }else//剩余字符大于k个小于2*k个
            reverse(s, i, i+k-1);
        return s;
    }
};

猜你喜欢

转载自blog.csdn.net/qq_32523711/article/details/107846226