KMP代码: 1 int KmpSearch(char* s, char* p) 2 { 3 int i = 0; 4 int j = 0; 5 int sLen = strlen(s); 6 int...
分类:
其他好文 时间:
2014-09-01 19:18:43
阅读次数:
446
题意:
给定一个长为L的字符串(L
求Π(num[i]+1)%1000000007
这就是KMP算法的一个变形。。。首先求出next数组,顺便求出cnt数组,代表长度为i的前缀经过几次fix=next[fix]会得到0,然后重新匹配一次,这次注意当fix*2>i的时候令fix=next[fix]即可
这题有坑 切忌用num数组代替next
此外勿忘开long long
这题就水过去了。...
分类:
其他好文 时间:
2014-09-01 14:06:13
阅读次数:
247
hdu 4300 Clairewd’s message(详解,扩展KMP)...
分类:
其他好文 时间:
2014-09-01 09:21:19
阅读次数:
326
poj2752 Seek the Name, Seek the Fame(next数组的运用)...
分类:
其他好文 时间:
2014-09-01 09:21:02
阅读次数:
247
本题又是一个典型的KMP应用。
求两个字符串相加的结果,相加的规律是一个字符串的后缀和另一个字符串的前缀相同,就可以合并这个部分。
不过本题的题意不是很清晰,因为没有太明确指出这两个字符串的出现顺序是无关的,只是需要输出合并后长度最短的结果,如果合并后长度一样,那么就按照字典顺序,输出字典顺序在前的字符串。
思路:
1 使用kmp在s2查找s1,那么最终结束的时候next table的值就...
分类:
其他好文 时间:
2014-08-31 17:18:41
阅读次数:
140
KMP算法是一种改进的字符串匹配算法。适用于模式串P有循环重复段的情况下。 原理: 主串 S:S1, S2, …, …, …, …, …, …, Si-k+1, …, Si-1, Si 模式串P:(P1, P2, …, Pk-1,) Pk, …, (Pj-k+1, …, Pj-1,) Pj Pj与S...
分类:
其他好文 时间:
2014-08-30 13:49:09
阅读次数:
221
昨天晚上阿里的“鄙视”题让我非常捉鸡。。。其实抛去那些让人完全搞不明白的选择题(吐槽一下有两个选项一样的单选题),后面的附加题还是很一般的。寻找公共最长字串的那个题我一看就想到KMP算法,然后用KMP解决了,但是在这过程中发现根本无法顺畅的写出KMP本身,这有点囧。在leetcode上A了三次这个题...
分类:
其他好文 时间:
2014-08-30 12:33:39
阅读次数:
186
题目来源:URAL 1732 . Ministry of Truth
题意:把第一个字符串处理一下 变成第二个 不要的字符改成下划线 空格不能改
思路:对第二个字符串单词分割 得到每一个单词后从第一个字符串中匹配 匹配成功 记录当前匹配的位置 然后下一个单词从x+2处在匹配 知道所有的单词都被匹配到
鄙视自己没想清楚写了半天 最后发现题目意思都错了
改了很多 最后代码和原来...
分类:
其他好文 时间:
2014-08-30 11:17:59
阅读次数:
131
KMP算法是一种改进的字符串匹配算法。适用于模式串P有循环重复段的情况下。原理:主串 S:S1, S2, …, …, …, …, …, …, Si-k+1, …, Si-1, Si模式串P:(P1, P2, …, Pk-1,) Pk, …, (Pj-k+1, …, Pj-1,) PjPj与Si不匹配...
分类:
其他好文 时间:
2014-08-29 17:59:38
阅读次数:
187
前面两篇文章,分别介绍了字符串的概念、抽象数据类型、KMP模式匹配算法。这篇文章,我们来学习字符串的一些常用算法。字符串的相关操作算法StrAssign:/*功能:生成一个其值等于Chars的串T*/Status StrAssign(String T, char *chars){ int i...
分类:
其他好文 时间:
2014-08-29 17:53:38
阅读次数:
183