代码随想录算法训练营第八天 |541. 反转字符串 II、剑指 Offer 05. 替换空格、151. 反转字符串中的单词、剑指 Offer 58 - II.

102 阅读1分钟

代码随想录算法训练营第八天 |541. 反转字符串 II、剑指 Offer 05. 替换空格、151. 反转字符串中的单词、剑指 Offer 58 - II. 左旋转字符串

541. 反转字符串 II

题目链接:541. 反转字符串 II

  • 对于边界的把控还是有点细节的,剩余元素小于k个 是 if(len - i < k), 总长度 = (len - 1) - i + 1, 最后一个元素下标 减去 i的下标再加1。
  • reverse用的是左闭右开区间

剑指 Offer 05. 替换空格

题目链接:剑指 Offer 05. 替换空格

  • 用C++ resize之后倒过来操作,空间时间复杂度都很低
  • 先统计空格数量,腾出添加的空间然后从往前添加字符

151. 反转字符串中的单词

题目链接:151. 反转字符串中的单词

  • 去除空格要用到移除数组元素的方法,直接不管空格,当遇到字母时进行操作,然后补上空格
  • 或者去除开头空格,中间空格,尾部空格
  • 如何界定一个单词,遇到空格的前一个字母是单词的结尾

剑指 Offer 58 - II. 左旋转字符串

题目链接:剑指 Offer 58 - II. 左旋转字符串

  • 整体反转+局部反转
  • 注意reverse函数的start和end