字符串处理
EaShion1994
这个作者很懒,什么都没留下…
展开
-
HDU_4300 Clairewd’s message(KMP)
题目点这里 题解: 这道题题意不是很好理解。每次输入第一行给一个密码表,第二行是一个翻译了一半的密文(也可能翻译完成)。将密文再按照密码表全部翻译一遍后,结尾已经翻译过的部分会合原密文相同。从(len+1)/2处截开,然后拿原文KMP比较,最后匹配成功的位数就是已经翻译好的位数,对应输出就好了。实现稍微有点复杂。 代码实现:#include <iostream>#include <cstdi原创 2015-08-14 16:50:24 · 533 阅读 · 0 评论 -
HDU_1711 Number Sequence(KMP)
题目请点我 题解: 刚学会KMP,一道练手题,没什么难度,就是简单的模板。KMP注意好i,j的取值与变换就好了。 代码实现:#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#define MAX_N 1000010#define MAX_M 10010using namespace std原创 2015-08-14 13:17:27 · 383 阅读 · 0 评论 -
HDU_3336 Count the string(KMP)
题目请点我 题解: 题意是在确定了一个前串后,问能找到多少个与前串对应的后串。注意后串是可以重叠的,比如aaaaaa,若固定前串为aa,则后传为aaaa,共有三个与之匹配,所以共有四个aa字串。最开始的思路是枚举字串的长度,但是是O(N^2)的时间复杂度,超时了很多次。后来借鉴同学的方法,换了一种思路,每次利用while循环找到以A[i]结尾的长度不大于i/2的匹配子串。不考虑子串的长度,而是考原创 2015-08-19 10:26:23 · 829 阅读 · 0 评论 -
POJ_1961 Period(KMP)
题目请点我 题解: 这道题是KMP的变形,关键是找到重复单元的长度。设置一个辅助数组,用于存储长度为i的串的重复单元长度,对于任意长度的串初始化重复单元长度为自身,当满足关系式能够更新时再去更新。 代码实现:#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#define MAX 100001原创 2015-08-19 15:57:22 · 479 阅读 · 0 评论 -
HDU_3746 Cyclic Nacklace(KMP)
题目请点我 题解: 题目大意:有一个字符串s,可以在前后添加字符,使字符串成为一个循环次数至少为2的循环字符串,输出最少需要添加的字符数目。 首先可以证明题目可以等价为只在末尾添加字符使满足题意,要找到添加资格字符我们首先要找到循环单位的长度,利用一个辅助数组储存从起始位置开始长度为i的串的循环长度,初始值为i,利用与Next数组之间的关系来更新,找到循环长度,比如字符串abcabc,Next原创 2015-08-21 11:08:26 · 679 阅读 · 0 评论