代码随想录算法训练营第七天| 344.反转字符串 541. 反转字符串II

发布时间 2023-12-06 21:34:57作者: 梅子酒ya

LeetCode 344.反转字符串

题目链接:  LeetCode344

思路:  定义left、right指针,将两指针对应的值反转即可

 

class Solution {
public:
    void reverseString(vector<char>& s) {
        int n = s.size();
        for(int left=0,right=n-1;left<right;++left,--right){
            swap(s[left],s[right]);
        }
    }
};

 

 

LeetCode 541. 反转字符串II

题目链接:  LeetCode541

思路:

 

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 );
                continue;
            }
            // 3. 剩余字符少于 k 个,则将剩余字符全部反转。
            reverse(s.begin() + i, s.begin() + s.size());
        }
        return s;
    }
};