这题说的是给了一个模板串 然后又给了一个串 需要找出类似的按个模板串 , 改相等的位置要相等 该大于的位置到大于我们将模板串做好失配指针就ok了,然后匹配和原来的匹配不同,这个匹配需要的是相对匹配,只要他们的相对位置相同就ok了,每次计算要插入的数在这个匹配中的排位#include #include...
分类:
其他好文 时间:
2015-09-17 23:22:58
阅读次数:
181
题意很简单,给一个长度不大于200000的字符串,求长度在A-B之间的子串出现的频率,输出前N大频率的子串。这题卡了我很久,一直在纠结使用哪种算法,然后为写这题硬是学会了KMP,发现用不上,又去学AC自动机,发现一些细节不好处理,然后终于找到一种简单的算法,哈希。要申明的是这个代码是借鉴别人的写的,...
分类:
其他好文 时间:
2015-09-17 21:21:42
阅读次数:
121
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5442题意:有一个由小写字母组成的字符串(长度为n),首尾相接,求顺时针转和逆时针转的情况下,长度为n的最大字典序的字符串的首位的位置。如果顺时针和逆时针求得的字符串相同,则选择开始位置较前的,如果开始位...
分类:
其他好文 时间:
2015-09-17 10:06:18
阅读次数:
152
题目大意给出一个字符串S,S可能是多个较短的字符串的重复连接。比如"ababab"为字符串"ab"重复三次的结果;"abc" 为"abc"重复一次的结果;"abababab"可能是"abab"重复两次,也可能是"ab"重复四次的结果。对一个给定的字符串S,求出最大的k,使得它为某个子串A重复k次的结...
分类:
其他好文 时间:
2015-09-16 17:53:19
阅读次数:
171
题目大意给定字符串S,求出S的所有可能相同前后缀的长度。比如:"alala"的前缀分别为{"a", "al", "ala", "alal", "alala"}, 后缀分别为{"a", "la", "ala", "lala", "alala"}. 其中有{"a", "ala", "alala"}是相同...
分类:
其他好文 时间:
2015-09-16 17:33:02
阅读次数:
110
KMP算法是字符串匹配处理中一种非常高效的算法,它的时间复杂度可以达到O(N+M),远优于普通匹配的O(NxM)。它最早是由Knuth,Morris,Pratt共同提出。算法原理普通的字符串匹配,假设从母串的A位置开始匹配,在某个位置B当母串和子串失配的时候匹配的起点会回溯到A+1处重新开始。而从A...
分类:
编程语言 时间:
2015-09-16 14:09:34
阅读次数:
239
#include #include #include #include #include using namespace std;const int maxn=20005;int MaxRepresstation(char * S, int len ) { int i = 0, j = 1...
分类:
其他好文 时间:
2015-09-15 18:04:15
阅读次数:
126
#include #include #include #include #include using namespace std;const int maxn=2000005;int MinRepresstation(char * S, int len ) { int i = 0, j =...
分类:
其他好文 时间:
2015-09-15 17:57:07
阅读次数:
170
题意:给定一个由小写字母组成的长度为 n 的字符串,首尾相连,可以从任意一个字符开始,顺时针或逆时针取这个串(长度为 n),求一个字典序最大的字符串的开始字符位置和顺时针或逆时针。如果有多个字典序最大的字符串,优先选择开始位置靠前的,如果开始位置相同,优先选择顺时针。这种字符串的问题,第一反应是后缀...
分类:
编程语言 时间:
2015-09-14 21:15:04
阅读次数:
257
问题背景在我们平时使用计算机的过程中,有一项使用非常频繁的功能就是字符串查找。这个问题可以描述成:给定一个字符串文本T,要从中找出是否含有某个子串P。我们把P叫做模式字符串。这个问题最直接的解法就是逐个匹配:先将T和P左对齐,从头开始依次比较P中的每个字符是否和T中对应的字符相同。例如,T为“a a...
分类:
编程语言 时间:
2015-09-14 11:46:19
阅读次数:
198