![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
字符串
as604412059
这个作者很懒,什么都没留下…
展开
-
manacher
最平常的算法是O(n^3)暴力枚举的。O(n^2)的是从中开始枚举,对奇数串和偶数串分别处理。而manacher采取了增加字符的方式避开了奇偶的讨论,而且达到了理论的下界O(n)的时间复杂度。设mx为字符串能往右延伸的最大点,id为最大点时的对称点。设p数组为当前点能延伸距离,j点为i关于id的对称点,则j=2*id-i,(0i时表明最大延伸距离大于当前点,即当前点能向右延伸。但是只能取p[j]和原创 2016-07-26 09:59:02 · 235 阅读 · 0 评论 -
KMP
KMP算法是用来解决两个字符串匹配的十分神奇的O(n)算法。最主要的在于对于目标串的处理,有一个名为next的数组,得到的是字符当前点的后缀和字符的前缀能匹配相等的最大值。用O(n)求出。然后当对模式串进行匹配时用next数组进行转移,模式串遍历需要O(m)时间,对整体而言,个人觉得匹配串next跳的总次数会<2*O(n),即可看成O(n)时间,那么整体时间复杂度为O(m+n).这篇博客讲的很棒:h原创 2016-07-26 10:35:58 · 177 阅读 · 0 评论