代码随想录算法训练营第8天—字符串02 | ●28. 实现 strStr()(KMP) ●459.重复的子字符串 ●字符串总结 ●双指针回顾

今天的任务包含两道KMP的题,在一刷的时候先不做,主要理解算法思路,二刷再过这两道题

*28. 实现 strStr()

题目链接/文章讲解/视频讲解:https://programmercarl.com/0028.%E5%AE%9E%E7%8E%B0strStr.html

  • 考点
    • KMP
  • 我的思路
    • 暴力法
  • 视频讲解关键点总结
    • KMP算法
      • 目的
        • 在字符串匹配失败时,充分利用之前已经匹配成功的部分,从而提升算法的运行效率
      • 实现方式
        • 通过计算模式串的前缀表来决定在匹配失败的时候跳回到模式串的哪个位置
        • 具体如何计算前缀表见视频讲解
  • 我的思路的问题
  • 代码书写问题

  • 可执行代码

*459.重复的子字符串

  • 考点
    • KMP
  • 我的思路

  • 视频讲解关键点总结

  • 我的思路的问题

  • 代码书写问题

  • 可执行代码

字符串总结

题目链接/文章讲解:https://programmercarl.com/%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%80%BB%E7%BB%93.html

  • 字符串类型的题目,往往思路上并不难,但是代码实现上要下一番功夫
  • 双指针法是字符串类型题目的常客
  • KMP是字符串匹配最重要的算法

双指针回顾

文章讲解:https://programmercarl.com/%E5%8F%8C%E6%8C%87%E9%92%88%E6%80%BB%E7%BB%93.html

  • 数组中,可以用来移除元素的时候降低时间复杂度,通过在一个循环里完成暴力解法两个循环才能完成的事情
  • 字符串中,反转字符串、替换字符等操作都可以使用到双指针
  • 链表里,反转链表、判断是否有环以及找环的入口都要用到双指针(快慢指针)(在链表中,与其它数据结构的题目不同,使用双指针不仅仅是为了降低时间复杂度,更是因为很多题只能利用双指针的解法)
  • 计算N数之和时,使用双指针可以将时间复杂度降为O(n^(N-1)),同时也更便于进行N元组去重操作

你可能感兴趣的:(Leetcode,代码随想录(Python),算法,python)