反转字符串Ⅱ

题目描述

反转字符串Ⅱ_第1张图片

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

解答

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区间是左闭右开
            {
                reverse(s.begin() + i , s.begin() + i + k);
                continue;
            }
             //如果i+k > s.size();就是说剩余部分少于k
            reverse(s.begin()+i,s.begin()+s.size());
        }
        return s;
    }
};

continue跳出本次循环直接到下一次,所以下面那个替换的代码只有在if条件不满足时候才执行;

        for (int i = 0; i < n; i += 2 * k) {
            reverse(s.begin() + i, s.begin() + min(i + k, n));
        }
        return s;

直接用min(),选出其中比较小的更快;

你可能感兴趣的:(c++每日一题leetcode,leetcode,算法)