字符串-kmp
IDrandom
菜菜菜
展开
-
[LeetCode 28,35][简单]实现strStr()/搜索插入位置
28.实现strStr() 题目链接 复习了下kmp class Solution { public: typedef vector<int> vi; vi nxt; void getnext(string needle){ int len=needle.length(); nxt=vi(len+10);nxt[0]=-1; ...原创 2020-01-27 03:48:27 · 121 阅读 · 0 评论 -
hdu1238Substrings
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1238 这题枚举子串和它的反串暴力就能过#include <stdio.h> #include<iostream> #include<cstring> #include<cstdlib> #include<cmath> using namespace std; char p[105][105]; cha原创 2016-08-01 15:04:33 · 764 阅读 · 0 评论 -
hdu2328Corporate Identity
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2328 找一个字典序最小的公共最长子串,枚举子串暴力就能过,这里有个小优化就是选取最短的字符串枚举其子串。#include <stdio.h> #include<iostream> #include<cstring> #include<cstdlib> #include<cmath> using nam原创 2016-08-01 15:12:57 · 629 阅读 · 0 评论 -
hdu4300Clairewd’s message(kmp||exkmp)( 模板 )
????:http://acm.hdu.edu.cn/showproblem.php?pid=4300 ??????to??????,?????????,?????????????,???????????,??????????(??+??) ???????????????????????????????ex[], ???s[]???,t[]???????,ex[i]?s[i]?t???????原创 2016-08-01 14:57:08 · 487 阅读 · 0 评论 -
hdu3336Count the string
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3336 给出一个字符串,求它的每一个前缀在整个字符串中出现的次数和 dp[i]代表以第i位结尾的字符串中包括多少以第i位字母结尾的前缀的出现次数 那么有dp[i]=dp[nxt[i]]+1 最后累加一下就好了 别忘了取模。#include <stdio.h> #include<cstring>原创 2016-07-29 16:26:25 · 362 阅读 · 0 评论 -
hdu2594Simpsons’ Hidden Talents
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2594 给你两个串s1和s2,问你s2的后缀和s1的前缀相等的最长长度 把s2接在s1后面,求出nxt[]数组以后就结束了。。。 注意长度不要超#include <stdio.h> #include<cstring> #include<iostream> #include<cmath> using原创 2016-07-29 16:14:24 · 273 阅读 · 0 评论 -
poj3080Blue Jeans
题目链接:http://poj.org/problem?id=3080 求给定多个字符串的最长公共子串,若有相同输出字典序最小的那个 因为每个串最多60个字符,枚举其中一个串的子串进行匹配并记录最大值即可。#include <stdio.h> #include<cstring> #include<string> using namespace std; char ans[70]; char a[原创 2016-07-29 16:03:18 · 364 阅读 · 0 评论 -
poj2752Seek the Name, Seek the Fame
题目链接:http://poj.org/problem?id=2752 问后缀等于前缀,并升序输出长度 边跳边输出就好啦#include <stdio.h> #include<cstring> using namespace std; char b[400010]; int nxt[400010]; int lb; void gnx(){ nxt[0]=-1; int i=0,j原创 2016-07-29 15:53:14 · 292 阅读 · 0 评论 -
poj2406Power Strings
题目链接: http://poj.org/problem?id=2406 给你一个字符串,让你求它可以表示成最多几个字符串的重复,求循环节裸题 不能整除就为1,能整除就是len/t;#include <stdio.h> #include<cstring> using namespace std; char b[1000100]; int nxt[1000100]; int lb; void g原创 2016-07-29 15:45:49 · 308 阅读 · 0 评论 -
hdu1358Period(nxt找循环节)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1358 给你一个字符串,问它的前缀能不能表示成一个字符串重复k次,并按照前缀长度输出前缀长度和周期数。 求出nxt[]以后,扫一遍看长度是不是被循环节的长度整除#include <stdio.h> #include<cstring> using namespace std; char b[100001原创 2016-07-29 15:33:11 · 329 阅读 · 0 评论 -
hust1010The Minimum Length
题目链接:http://acm.hust.edu.cn/problem/show/1010 求循环节裸题#include <stdio.h> #include<cstring> using namespace std; char b[1000010]; int nxt[1000010]; int lb; void gnx(){ nxt[0]=-1; int i=0,j=-1;原创 2016-07-29 15:36:53 · 312 阅读 · 0 评论 -
hdu3746Cyclic Nacklace(kmp中nxt数组应用)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3746 用nxt数组求最短循环节 最短循环节为 T=len−nxt[len]T=len-nxt[len] 其中len为字符串长度,字符串是从0开始存的 题目要求凑成至少两个的循环要补多少个,那么算下循环节搞一搞就可以了#include <stdio.h> #include<cstring> us原创 2016-07-29 15:24:28 · 301 阅读 · 0 评论 -
hdu2087剪花布条
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2087 也是裸题,先剪一定优,匹配出一次以后不向回跳就行了#include <stdio.h> #include<cstring> #include<iostream> #include<algorithm> using namespace std; int nxt[1005]; char a[10原创 2016-07-29 14:57:01 · 279 阅读 · 0 评论 -
hdu1686Oulipo
问子串在母串中出现了几次,kmp裸题。 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1686#include <stdio.h> #include<cstring> #include<cstdlib> #include<algorithm> using namespace std; int nxt[10010]; char a[1000010];原创 2016-07-29 14:50:33 · 397 阅读 · 0 评论 -
hdu1711Number Sequence
模板题吧 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1711#include <stdio.h> int a[1000010]; int b[10010]; int nxt[10010]; void gtnxt(int l){ nxt[0]=-1; int i=0,j=-1; while(i<l){ i原创 2016-07-29 14:45:50 · 308 阅读 · 0 评论