![](https://img-blog.csdnimg.cn/20190913165537650.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
字符串
nuoyanli
做题,反思,做题;刷题,总结,刷题;
展开
-
哈希表
哈希表哈希表定义哈希表是又称散列表,一种以 "key-value" 形式存储数据的数据结构。所谓以 "key-value"形式存储数据,是指任意的key 都唯一对应到内存中的某个位置。只需要输入查找的值 key,就可以快速地找到其对应的 value。可以把哈希表理解为一种高级的数组,这种数组的下标可以是很大的整数,浮点数,字符串甚至结构体。哈希函数要让 key 对应到内存中的位置,就要为 key 计算索引,也就是计算这个数据应该放到哪里。这个根据 key 计算索引的函数就叫做哈希函数,也称散列函数。原创 2020-07-15 10:05:13 · 1226 阅读 · 1 评论 -
Simpsons’ Hidden Talents(前缀后缀匹配plus
题目描述:题意:给定两个字符串,求a串中即是b串后缀又是本身前缀的最长串,如果没有就输出0思路:显然的nxt数组定义题,可以考虑讲两个字符串拼接起来然后nxt[a串长度+b串长度](拼接起来后a串的前缀一定是b串的前缀b串的后缀一定是a串的后缀 ),但是这样就会出现nxt[a串长度+b串长度]大于a或者b的长度,那么只需要往前找即可:while (nxt[j]>lena||nxt[...原创 2019-07-23 15:21:24 · 1307 阅读 · 0 评论 -
Count the string(前缀出现次数
题目描述:题意:输出所有s中前缀在s中出现的次数。思路:拿到这题刚开始的时候我是没有头绪的。当然,DP问题本来就是一个玄学,再加上这题还得用到KMP算法对字符串进行处理,很难想到用DP去求解(当然也可能是小编我太渣了),我们用dp[i]表示i前面所出现的前缀重复的次数,因为KMP算法中next数组的定义,next[i]就是在i前面前缀重复的上一个位置,这个说法可能不怎么好理解,这里小编再...原创 2019-07-23 15:10:42 · 1595 阅读 · 0 评论 -
POJ2752 Seek the Name, Seek the Fame(KMP,前后缀匹配
题目来源:http://poj.org/problem?id=2752题目描述:题意:给定一个字符串s,求有哪些长度的s的前缀,同时也是s的后缀。思路:对于字符串s的第i个字符s[i],next[i]定义为字符s[i]前面最多有多少个连续的字符和字符串s从初始位置开始的字符匹配。那么我们可以从后到前匹配前缀和后缀,如果前缀与后缀匹配,则下一个前缀与后缀匹配的字符串必然在前缀中。参考代...原创 2019-07-17 10:39:26 · 1327 阅读 · 0 评论 -
POJ2406 Power Strings(KMP,判断字符串的最大循环周期
题目来源:http://poj.org/problem?id=2406思路:利用KMP算法,求字符串的next数组,若len可以被len - next[len]整除,则最大循环次数为len/(len - next[len]),否则为1参考代码:#include <cstdio>#include <cstring>using namespace std;cons...原创 2019-07-16 10:35:41 · 1551 阅读 · 0 评论 -
HDU1358 Period(KMP,找循环节并且输出位置)
题目来源:http://blog.csdn.net/riba2534/article/details/77985061题意:给了一个长度为n的字符串,然后让你找每一个前缀(从第二个字母开始)是否是循环的,如果是就把当前的位置和循环节的长度输出思路:就是 next 数组的使用,令 j=i−next[i] ,如果 i%j==0 就证明存在循环节,循环节的长度为 i/jps:数组开小报超时,...原创 2019-07-16 10:05:06 · 1363 阅读 · 0 评论 -
HDU3746 Cyclic Nacklace(KMP,补全最小循环节
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3746题意:一串字符,只能在串首和串尾添加字符,最少添加几个字符前后字符串连接起来会是一个循环节组成的串思路:那么我们最少需要添加的就是循环节大小减去不足循环节的串大小(只需要考虑尾部i % ( i - next[i] ) == 0 && next[i] != 0 则说明字符...原创 2019-07-16 09:42:52 · 1333 阅读 · 0 评论 -
Number Sequence(KMP,求模式串P在原串S中出现的第一个位置
题目描述:参考代码:#include <bits/stdc++.h>using namespace std;const int N=1e6+10;#define end '\n'#define IOS ios::sync_with_stdio(0)int nxt[N],t,n,m,p[N],s[N];void get_next() { int j = 0, k...原创 2019-07-15 17:53:24 · 1440 阅读 · 0 评论 -
Oulipo && HihoCoder - 1015 -KMP算法(可重叠KMP当匹配到一个j = nxt[j]
当原串S为 aaaa ,模式串为 aa 时算作出现了 3 次.终点是: 当j==plen 时, j=nxt[j]#include <bits/stdc++.h>using namespace std;const int N=1e6+10;#define end '\n'#define IOS ios::sync_with_stdio(0)int nxt[N];void ...原创 2019-07-15 17:18:05 · 1301 阅读 · 0 评论 -
HDU2087剪花布条(不重叠KMP匹配
题目来源当原串S为 aaaa ,模式串为 aa 时算作出现了 2 次.终点是: 当j==plen 时, j=nxt[j]参考代码:#include <bits/stdc++.h>using namespace std;const int N=1e6+10;#define end '\n'#define IOS ios::sync_with_stdio(0)int nx...原创 2019-07-15 17:13:08 · 1322 阅读 · 0 评论 -
P3805 【模板】manacher算法 马拉车:最长回文子串
题目链接给出一个只由小写英文字符a,b,c…y,z组成的字符串S,求S中最长回文串的长度.板子:#include <bits/stdc++.h>using namespace std;const int N=111000000+10;#define end '\n'#define IOS ios::sync_with_stdio(0)int n,hw[N],ans;c...原创 2019-07-15 16:40:33 · 1296 阅读 · 1 评论