算法训练营第八天

46 阅读1分钟

344.反转字符串

void reverseString(vector<char>& s) {
        //双指针原地修改数组
        for(int i = 0, j = s.size() - 1; i < s.size() / 2; i++, j--)
        {
            swap(s[i],s[j]);
        }
    }

541.反转字符串II

反转前k个字符串

string reverseStr(string s, int k) {
        for(int i = 0; i < s.size(); i += (2*k))  // 每次跃进2k是本题的精髓
        {
            if(i + k <= s.size()) // 满足条件,且长度合适
            {
                reverse(s.begin() + i, s.begin() + k + i);
            }
            else{
                reverse(s.begin() + i, s.end());
            }
        }
        return s;
    }