Leetcode刷题笔记题解(C++):541. 反转字符串 II

Leetcode刷题笔记题解(C++):541. 反转字符串 II_第1张图片

 

题目讲的很难理解,就是2k作为一段,前k个字符进行翻转,如果不足2k又够k也是翻转前k个字符, 不够k个字符的话直接全部翻转。

思路就是题意操作即可,分条件去解决。

class Solution {
public:
    string reverseStr(string s, int k) {
        for (int i = 0; i < s.size(); i += (2 * k)) { 
            // 1. 每隔 2k 个字符的前 k 个字符进行反转
            // 2. 剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符
            if (i + k <= s.size()) {
                reverse(s.begin() + i, s.begin() + i + k );
            } 
            // 3. 剩余字符少于 k 个,则将剩余字符全部反转。
            if(i + k > s.size()){
                reverse(s.begin() + i, s.begin() + s.size());
            }               
        }
        return s;
    }
};

 

你可能感兴趣的:(Leetcode算法题解,leetcode,字符串,翻转字符)