字符串
陈末iiiiiiiiiiii
Retired
展开
-
2021牛客寒假算法基础集训营4 E 折半枚举 dfs 字符串hash优化空间 字符串哈希的巧妙运用
题目 题解思路 子字符串只有40个,如果我们枚举每次枚举20个,再用枚举后的结果进行匹配,时间复杂度显然是够的,用STL内置的哈希表哈希string再匹配,交了一发mle了。 只能用自己的写的哈希来优化了。利用字符串哈希,我们可以O(1)的获取某个连续子串的哈希值,在用A中的小字符串来拼接大串的部分,通过前一半和后一半的组合来得出答案。 这里用dfs显然更优,我们判断可行性后再进入分支,如果用2进制枚举的化需要知道每个小字符串组合的哈希值,这东西也很大的。2^40 我们用dfs判断进入了某段长度后,再试探原创 2021-12-01 10:01:07 · 120 阅读 · 0 评论 -
831. KMP字符串 KMP算法 模板 字符串算法
题目 题解思路 算法 好理解 但是难写 贴个板子 以后使用 利用待匹配字符串的预处理前缀子串,来优化匹配字符串时的过度向前。 理解指南 AC代码 #include<iostream> using namespace std; const int N = 100100,M = 1000100; int n,m; char p[N],s[M]; int ne[N]; int main() { cin >> n >> p+1 >> m >&g原创 2021-09-22 17:41:33 · 64 阅读 · 0 评论 -
AcWing 3697. 回文子序列 子序列 哈希表
题目 链接 题解思路 首先要明白子序列的意思,就是可以在总序列总选择几个合在一起,并不一定是连续的。 这样我们只要找到两个相等的数之间的距离大于1即可,这样就能组成为3的回文子序列。 如果暴力的话要n平方的时间复杂度,运用哈希表存入每个元素的第一次出现的地址,出现重复时对比即可。 可以用map。 AC代码 #include <iostream> #include <cstdio> #include <algorithm> #include <cstring>原创 2021-06-30 16:25:17 · 59 阅读 · 0 评论 -
HDU 2089 itoa() 和strstr()的运用 字符串
题目 题 题解思路 利用下面两个函数快速判断即可。 cstring strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回 str1字符串从 str2第一次出现的位置的位置;否则,返回NULL cstdlib itoa(整型数据,目标字符串,进制) 把整型数字转换成字符串存储在数组中 AC代码 #include<iostream> #include<cstring> #include<cstdlib> using name原创 2021-05-01 20:39:09 · 63 阅读 · 0 评论