![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
KMP
Sin陌
这个作者很懒,什么都没留下…
展开
-
牛客练习赛 17-B 好位置(KMP)
链接:牛客练习赛 17-B 好位置 思路: 题目的意思就是判断串x是不是s的循环子串;可以用KMP来做,KMP模板就不多说了可以翻我之前写的。 这里s相当于主串,x为模板串,每匹配成功一次就标记一下(pos[i]标记)匹配成功的那段起点(设为1)和终点(设为-1),最后遍历pos数组求前缀和(sum)来判断是否都是好位置。 判断: 代码: #include <iostream> #include <cstring> using namespace std; const int N原创 2020-07-01 16:45:05 · 198 阅读 · 0 评论 -
字符串匹配——KMP
最大公共前后缀 前缀:必须包含第一个元素但不能包含最后一个; 后缀:必须包含最后一个元素但不能包含第一个; (1)最大公共前后缀:满足前缀和后缀长度相等条件下长度最长的前后缀; (2)next[i]:字符串中以i为结尾的那段所拥有的最大公共前后缀的长度,根据前后缀定义当只有一个元素时next数组值为0; 题目(来自AcWing上的一道KMP模板题) 给定一个模式串S,以及一个模板串P,所有字符串中只包含大小写英文字母以及阿拉伯数字。 模板串P在模式串S中多次作为子串出现。 求出模板串P在模式串S中所有出现原创 2020-07-01 16:13:22 · 363 阅读 · 0 评论