28. 找出字符串中第一个匹配项的下标
题目链接:https://leetcode.cn/problems/find-the-index-of-the-first-occurrence-in-a-string
0x1 看到题目的第一想法
- KMP
0x2 自己实现过程中遇到哪些困难
- 啥都不会
0x3 今日学习的文章链接,或者视频链接
- https://programmercarl.com/0028.%E5%AE%9E%E7%8E%B0strStr.html
- https://www.zhihu.com/question/21923021/answer/1032665486
0x4 看完代码随想录之后的想法
- 一次看不懂,多看几遍,理解一下Next数组的构造
0x5 今日收获,记录一下自己的学习时长
- 字符串匹配
- KMP
- 当出现字符串不匹配时,可以知道一部分之前已经匹配的文本内容,可以利用这些信息避免从头再去做匹配了
- 利用主字符串和匹配字符串做匹配
- Next数组的构造是用匹配字符串自己和自己做匹配
- 好好体会Next数组的构造,Next[x]的定义!Next[x]的定义!!Next[x]的定义!!!
1
2# 利用下面这个语句进行回退,注意回退的时候now不能退到0
now = Next[now-1]
- KMP
- 2h
459. 重复的子字符串
题目链接:https://leetcode.cn/problems/repeated-substring-pattern/
0x1 看到题目的第一想法
- 利用KMP中的Next进行求解
0x2 自己实现过程中遇到哪些困难
- 最后的if判断找Next规律找错了
0x3 今日学习的文章链接,或者视频链接
- https://programmercarl.com/0459.%E9%87%8D%E5%A4%8D%E7%9A%84%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2.html
0x4 看完代码随想录之后的想法
- 找规律
1
2
3
4s = "abcabcabcabc"
Next = [0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
if(Next[-1] > 0 and Next[-1] % (n - Next[-1]) == 0):
return True
0x5 今日收获,记录一下自己的学习时长
- python最后一个元素可以用nums[-1]索引到
- 45min
待重点复习
ALL
总结
- 字符串匹配
- Next数组的构造
- 主字符串和匹配字符串的匹配过程
- 字符串总结
- 双指针
- 时间复杂度会下降一个数量级
- 数组填充类
- 预留出空间,然后从后往前进行填充
- 反转
- 先整体反转再局部反转
- 先局部反转再整体反转
- 匹配 & 重复子串
- KMP
- next数组的构造
- 回退操作
1
now = Next[now - 1]
- 双指针
- 双指针
- 数组
- 原地移除指定的value
- 字符串
- 原地反转
- 前后双指针向中间归并
- 替换空格
- 预留出新的空间,从后向前!进行操作
- 字符删除类
- 原地反转
- N数之和
- 哈希表解决2数之和
- 3数之和、4数之和需要使用双指针进行操作
- 数组