Codeforces126B - Password(KMP)
摘要:
题目大意给定一个字符串S,要求你找到一个最长的子串,它既是S的前缀,也是S的后缀,并且在S的内部也出现过(非端点)题解KMP的失配函数f[i]的非零值就是前i个字符的一个最长前缀且也是后缀的字符串的末尾位置,倒过来求每一个f[i],并且判断是否在S的内部是否出现即可代码:#include #include #include #include using namespace std;#define MAXN 1000005char T[MAXN],s[MAXN];int f[MAXN];void getfail(char *p,int len){ int j; f[0]=j=-1; ... 阅读全文
posted @ 2013-09-20 22:33 仗剑奔走天涯 阅读(252) 评论(0) 推荐(0) 编辑