classSolution { public: string reverseStr(string s, int k){ int left = 0, right = k-1; while(left < s.size()){ right = right < s.size()?right:s.size()-1; int i =left,j = right; while(i<j){ auto temp = s[j]; s[j] = s[i]; s[i] = temp; i++; j--; } left = left+2*k; right = left+k-1; } return s; } }; // 代码随想录 classSolution { 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 ); } else { // 3. 剩余字符少于 k 个,则将剩余字符全部反转。 reverse(s.begin() + i, s.end()); } } return s; } };