![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
字符串匹配kmp
「已注销」
QQ_7293470
展开
-
Codeforces-25E Test
Codeforces-25E Test题目大意:给定三个子串 求公共母串的最小长度解题思路:运用kmp的next数组进行拼接,注意一共有6种组合方式代码块:#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>#include<string&...原创 2019-10-31 20:34:24 · 195 阅读 · 0 评论 -
CodeForces-1029A Many Equal Substrings
CodeForces-1029A Many Equal Substrings题目链接:CodeForces-1029A题目大意:给你一个子串 让你输出一个母串,使得母串中包含k个子串解题思路:利用kmp算法求next数组的部分,求得需要往后拼接的子串的字符数,之后往后拼接即可代码块:#include<iostream>#include<cstdio>usi...原创 2019-10-29 21:22:29 · 137 阅读 · 0 评论 -
POJ-2185 Milking Grid
POJ-2185 Milking Grid题目链接:POJ-2185题目大意:找到一块字符串数组的最小子块解题思路:将kmp变形 将每一列看作一个字符 求这一行字符串的next数组,将每一行看成一个字符 求这一列字符串的next数组,然后行数减去列的next数组最后一项就等于列的最小循环单位,行的最小循环单位同理,然后行列相乘就得到了面积代码块:#include<iostream...原创 2019-10-20 19:15:30 · 123 阅读 · 0 评论 -
HDU-2594 Simpsons’ Hidden Talents
HDU-2594 Simpsons’ Hidden Talents题目链接:HDU-2594题目大意:给定两个字符串 问第一个字符串前缀与第二个字符串的后缀的最大的重复部分有多长 不为0的话将他们输出解题思路:花里胡哨的过不去 直接将两个字符串拼接进行kmp的findNext就好,注意两个字符串要找到最短的长度,然后1截取前最短,2截取后最短,然后findNext,注意如果结果比两个字符串...原创 2019-10-20 19:09:49 · 158 阅读 · 0 评论 -
HDU-2087 剪花布条
HDU-2087 剪花布条题目链接:HDU-2087题目大意:给定一个模式串与匹配串,问模式串中有多少匹配串。注意,已经计数的部分的字母不可二次识别解题思路:kmp算法 将返回值改成下次继续搜索的首地址代码块:#include<iostream>#include<string>using namespace std;string strStr, str...原创 2019-10-20 19:04:25 · 108 阅读 · 0 评论 -
POJ-1358 Period
POJ-1358 Period题目大意:POJ-1358题目大意:问从字符串的开头开始,有多长相同的子串拼接成的子串解题思路:就是利用kmp的next数组 没找到规律不要紧 把next打出来就清楚了 和POJ-2406 Power Strings差不多代码块:#include<iostream>#include<cstring>#include<str...原创 2019-10-18 16:06:07 · 106 阅读 · 0 评论 -
HDU-1238 Substrings
HDU-1238 Substrings题目链接:HDU-1238题目大意:问给定个数的一些字符串中 最长的公共子串有多长 子串反过来匹配也算解题思路:从最短的字符串进行暴力切割 取到他的各种子串 然后将此子串的原形式和反向形式与给定字符串进行匹配识别 如果都含有就输出长度就好了 匹配过程用kmp 觉得暴力匹配会超时代码块:#include<iostream>#includ...原创 2019-10-18 13:47:26 · 164 阅读 · 0 评论 -
POJ-2406 Power Strings
POJ-2406 Power Strings题目链接:POJ-2406题目大意:检测一个字符串从头开始最多有多少个重复片段解题思路:利用kmp的求next数组的方法 求出next数组,之后看前缀和后缀最长的重合有多长 总长度减去重合的长度就是一个一个重复片段的长度 最后总长度除以一个重复片段的长度即可得出结果,当然如果总长度不是得出的重复片段长度的整数倍,说明只有最前面字符自己喽,输出一就...原创 2019-10-18 13:40:44 · 162 阅读 · 0 评论 -
POJ-3461 Oulipo
POJ-3461 Oulipo题目链接:POJ-3461题目大意:寻找一个字符串在另一个字符串中一共出现了多少次解题思路:完全的kmp算法加点料 最一开始我是在模式串里面找到匹配串的开头的那个字母然后kmp的,后来果断TLE了,然后改成在找到第一个相匹配的位置后j = next[j - 1],因为要直接用之前在模式串后面部分匹配好的串片段和匹配串前面的相同的串片段。所以省去不少时间。这题挺...原创 2019-10-18 13:31:02 · 196 阅读 · 0 评论