获得徽章 7
赞了这篇沸点
上班好无聊,有啥好摸鱼推荐么
12
赞了这篇沸点
看到【微软正式发布 OpenJDK 开源预览版】,我突然想到这个。。。。
哈哈哈123asdf于2021-04-09 17:10发布的图片
评论
赞了这篇沸点
【LaTeX免费入门教程】“Learn LaTeX online for free in beginner friendly lessons | learnlatex.org” 网页链接 #LaTeX#
爱可可爱生活于2021-04-05 13:57发布的图片
评论
赞了这篇沸点
兄弟们 准备撤
评论
赞了这篇沸点
刚接种完新冠疫苗,三天内不能剧烈运动。。。运动。。。👏
19
赞了这篇沸点
这个屎山真的太恶心了,shit!👎
刘一笔于2021-03-27 15:25发布的图片
19
赞了这篇沸点
真香,你们要来一套吗😂😂😂
撒点料儿于2021-03-21 11:55发布的图片
39
赞了这篇沸点
公司有的大佬好怪,边写代码,边口述自己的心情,按动鼠标或键盘表达自己的情绪,偶尔再拍打桌子抒发感情,,说些实话,他们这样,我好烦,,
47
赞了这篇沸点
如果九年前,这样的字节跳动叫你去,你会去吗?
程序员追风于2021-03-19 11:35发布的图片
程序员追风于2021-03-19 11:35发布的图片
程序员追风于2021-03-19 11:35发布的图片
18
赞了这篇沸点
独居女生的一个普通晚餐
树洞robot于2021-03-19 11:48发布的图片
15
赞了这篇沸点
日常业务都写不好的人有什么资格在那里逼逼赖赖 嫌这嫌那的
我们还行不行吧于2021-03-19 16:03发布的图片
22
赞了这篇沸点
28. 实现 strStr()

思路1: 暴力
见代码

思路2: KMP算法 (双指针)
先通过计算一个叫next的数组, next[i] 表示 [0,i]之间最长的公共前后缀的长度. 它的意义在于当模式串[j]和主串[i]发生不匹配时, 直接用next[j - 1] 位置继续与主串的i开始比较即可, 不必再从模式串的头开始匹配.



核心在于如何计算next数组. 就是计算每个位置next[i]的最长公共前后缀的长度

比如 ABABAA
next[0] = 0 , A
next[1] = 0 , AB
next[2] = 1 , ABA
next[3] = 2 , ABAB
next[4] = 3 , ABABA
next[5] = 1 , ABABAA

在代码实现上通过定义前后缀两个指针去迭代计算最长公共前后缀的长度

1) 当 pattern[j] == pattern[i] 时, 前后缀指针同时加1即可

2)但是当 pattern[j] != pattern[i] 时, 但是它们的上一部分(公共前后缀) 是匹配的. 所以从 next[j - 1] 开始计算公共前后缀(即 [0, j-1]的 最长公共前后缀),
此时再判断上一个公共部分j 与 当前公共部分的i 比较. 此时同理再次判断 i 和 j 是否不匹配. 匹配走上面 “1)” 过程 , 不匹配重复走的"2)" 过程.

总的来说就是不断缩小可能的公共部分去比较, 进而找到最长的公共前后缀.
展开
李白的手机于2021-03-14 14:07发布的图片
李白的手机于2021-03-14 14:07发布的图片
李白的手机于2021-03-14 14:07发布的图片
5
赞了这篇沸点
这种活上哪里找
武汉大D哥于2021-03-12 16:50发布的图片
5
赞了这篇沸点
这周再摸一小时,我就好好工作了
10
赞了这篇沸点
418 I'm a teapot
anysunflower同学于2021-03-07 14:13发布的图片
评论
下一页
个人成就
文章被点赞 1
文章被阅读 1,229
掘力值 40
收藏集
9
关注标签
40
加入于