【刷题DAY08】344, 541, 剑指Offer 05, 151, 剑指Offer58-II.md

344. 反转字符串

题目链接:https://leetcode.cn/problems/reverse-string/

0x1 看到题目的第一想法

  • 找到n/2的地方,交换i和n-1-i

0x2 自己实现过程中遇到哪些困难

  • No

0x3 今日学习的文章链接,或者视频链接

0x4 看完代码随想录之后的想法

  • 不需要找n/2这个值,直接定义双指针,从两端向中间移动进行交换

0x5 今日收获,记录一下自己的学习时长

  • 原地反转字符串
    • 两端双指针
  • 15min

541. 反转字符串 II

题目链接:https://leetcode.cn/problems/reverse-string-ii/

0x1 看到题目的第一想法

  • 题目在说什么,好不清楚

0x2 自己实现过程中遇到哪些困难

  • 跟着实例报错缝缝补补
  • python中的str,不能对元素进行复制操作
    1
    2
    s = "abdx"
    s[3] = 'a' 会报错

0x3 今日学习的文章链接,或者视频链接

0x4 看完代码随想录之后的想法

  • 一样的解法,但是没有利用python特性,写的太复杂了
    • for循环
    • 切片:,如果超过了本来的长度,会自动回到最后一个,就不需要考虑特别多的边界(缝缝补补)

0x5 今日收获,记录一下自己的学习时长

  • 字符串str操作
    • 数组
  • 45min

剑指 Offer 05. 替换空格

题目链接:https://leetcode.cn/problems/ti-huan-kong-ge-lcof/

0x1 看到题目的第一想法

  • 找到有空格的地方换一下

0x2 自己实现过程中遇到哪些困难

  • 不知道python怎么操作str类型的数据

0x3 今日学习的文章链接,或者视频链接

0x4 看完代码随想录之后的想法

  • 暴力操作
    1
    '%20'.join(s.split(' '))
  • 把空格替换成’%20’,需要从后往前寻找空格,然后进行替换,才不会产生O(n^2)的时间复杂度
    • 找到空格的位置,利用切片进行字符串的组合

0x5 今日收获,记录一下自己的学习时长

  • enumerate(s)
    • 会返回两个值 i, e,索引,以及对应索引上的值
  • “”.join(list)
    • 把list转str
  • 1h

151. 翻转字符串里的单词

题目链接:https://leetcode.cn/problems/reverse-words-in-a-string/

0x1 看到题目的第一想法

  • 各种字符串操作大杂烩

0x2 自己实现过程中遇到哪些困难

  • 删除中间的重复空格
  • 每个单词反转
  • 空格’ ‘,疏忽大意错写成’’

0x3 今日学习的文章链接,或者视频链接

0x4 看完代码随想录之后的想法

  • 反转单词顺序
    • 整体反转+局部反转
  • 删除空格我写复杂了
    • 用双指针删除前面和后面的空格
    • 删除中间的重复空格, 有点技巧,巧妙运用elif(tmp[-1]!=’ ‘)这个判断来保留一个’ ‘, 不要其他重复空格
  • 每个单词反转
    • 要找到空格和最后的位置,然后进行反转
      • 两层while

0x5 今日收获,记录一下自己的学习时长

  • 字符串str各种操作
    • 双指针
    • 反转
    • 删除
  • 1.5h

剑指Offer58-II. 左旋转字符串

题目链接:https://leetcode.cn/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof/

0x1 看到题目的第一想法

  • python切片直接移走

0x2 自己实现过程中遇到哪些困难

  • No

0x3 今日学习的文章链接,或者视频链接

0x4 看完代码随想录之后的想法

  • 是有技巧的
    • 整体反转+局部反转
    • 反转区间为前n的子串;反转区间为n到末尾的子串;反转整个字符串

0x5 今日收获,记录一下自己的学习时长

  • 反转移动技巧
    • 整体反转+局部反转
  • 30min

待重点复习

ALL

总结

  • 字符串操作
    • 反转
      • 局部反转 + 整体反转
    • 删除
      • 双指针
      • 移除指定元素