首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【复试上机】LeetCode-简单-010-Implement strStr

Implement strStr()

文字思想:

就是KMP算法,数据结构知识点课程详细讲过,不再详细解释。

求next数组核心思想:

 a)依次去求next数组【依次去求重合】。

 b)求重合的过程其实就是模式匹配过程【利用已经求得的next数组】。

 c)next[indexS+1] = indexC+1。

为了效率更高,next数组可以进一步优化为nextVal数组。

 a)在next数组基础上进行改进,nextVal[1] = 0。

 b)求next数组时,是直接 next[indexS] = indexC,这里多一步判断就好,indexS位置上的字符与indexC位置上字符:

     不等:nextVal[indexS] = indexC

     相等:nextVal[indexS] = nextVal[indexC]

KMP算法核心思想:

 a)框架与简单匹配差不多,区别是在与不匹配时,不匹配时,模式串查找next数组,确定跳转位置。

 b)最终模式串遍历到尾、主串任意:匹配;主串到尾、模式串没到尾:不匹配。

代码:

复杂度:

就是KMP算法的时间复杂度O(m+n),m是模式串的长度,n是主串的长度。

空间复杂度O(m),nextVal数组的长度。

积累:

KMP算法本身。

注:

如果使用暴力方法解,也扣不了多少分,先有答案,再考虑优化的问题。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200911A098MV00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券