代码随想录打卡第8天 | 344. 反转字符串、541. 反转字符串II、54. 替换数字
344. 反转字符串 链接:344. 反转字符串 文章:代码随想录 视频:B站讲解 状态:✅ 第一想法 双指针法 看完题解后的想法 —— 实现中遇到的困难 —— 代码 class Solution { public: void reverseString(vector<char>& s) { int n = s.size(); int left = 0, right = n - 1; while (left < right) { char tmp = s[left]; s[left] = s[right]; s[right] = tmp; left++; right--; } } }; 541. 反转字符串II 链接:541. 反转字符串II 文章:代码随想录 视频:B站讲解 状态:✅ 第一想法 反转字符串写成可传位置的函数,然后一段段翻转,最后处理尾巴; 看完题解后的想法 用 for 循环每次跳 2k 更简洁; 实现中遇到的困难 —— 代码 class Solution { public: string reverseStr(string s, int k) { int n = s.size(); int time = n / (2* k); int tail = n % (2* k); int index = 0; while (time > 0) { swapStr(s, index, index+k-1); index = index + 2 * k ; time--; } if (tail > 0 && tail < k) { swapStr(s, index, index+tail-1); } else { swapStr(s, index, index+k-1); } return s; } void swapStr(string& s, int l, int r) { int left = l, right = r; while (left < right) { char tmp = s[left]; s[left] = s[right]; s[right] = tmp; left++; right--; } } }; KamaCoder 54. 替换数字 链接:KamaCoder 54. 替换数字 文章:代码随想录 视频:无 状态:⚠️ 第一想法 刚开始在纠结如何原地扩展; ...