根据题意,寻找子串出现的第k次的开头。寻找第k大,一般可以想到用主席树来维护。 但是这题还需要更多的转化,首先想到我们如果想知道子串匹配,一个可以考虑kmp,但是因为询问过多,不太科学。 一般还有两种,一种是哈希算法,一种是后缀数组求lcp。考虑哈希算法,感觉可做性不是很大,因为他要多次匹配。考虑后 ...
分类:
编程语言 时间:
2020-09-18 02:17:50
阅读次数:
44
最大回文子串匹配:暴力算法、中心拓展法、动态规划、manacher算法的理解和python实现 ...
分类:
编程语言 时间:
2020-05-21 13:22:07
阅读次数:
57
题意 有n个字符串,记为s1,s2……sn,s2与s1合并,合并的方式为:s1的后缀若与s2的前缀相同,就可以重叠起来,要最长的。 举个例子: “1333” “33345” → “133345” s1与s2合并后产生的字符串,再与s3合并,以此类推。 思路 两个字符串的子串匹配,比较容易想到哈希。 ...
分类:
其他好文 时间:
2020-02-12 16:12:06
阅读次数:
69
模板格式如下。for(int i=n; i>0; i--) { for(int j=1; j<=26; j++) nex[i-1][j-'a'] = nex[i][j-'a']; //26是假定字符集为小写字母 nex[i-1][s[i]-'a'] = i; } ...
分类:
其他好文 时间:
2020-02-06 14:55:34
阅读次数:
55
拓展KMP算法入门 博客推荐 "扩展KMP算法" , 图很形象,代码写的也很清晰,下面的模板就是出自该博客文章。 拓展KMP是求母串 长度为 和子串 长度为 ,求 的每一个后缀子串与 的前缀子串匹配的最长长度。 代码实现 ...
分类:
编程语言 时间:
2020-01-31 22:31:50
阅读次数:
75
函数原型 string.find(s, pattern [, init [, plain]] ) s: 源字符串 pattern: 待搜索模式串 init: 可选, 起始位置 plain: 我没用过 ① 子串匹配: 注意: lua 里面数组或者字符串的字符, 其下标索引是从 1 开始, 不是 0 s ...
分类:
其他好文 时间:
2019-11-06 15:09:28
阅读次数:
106
正则 正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。 Nlife+a,可以匹配Nlifea,Nlifeea,Nlifeeea ...... ,+号代表前面的字 ...
分类:
其他好文 时间:
2019-10-28 23:53:37
阅读次数:
127
**explain:**python3中的re库是一个正则匹配的函数库,里面包含了各种功能的正则函数,下面,我们一起学习下其中的几个常用函数 * **match()方法**: 从主串的起始位置开始匹配一个子串,匹配成功,返回匹配信息,不成功则返回NONE print(re.match("www", ...
分类:
编程语言 时间:
2019-05-16 10:58:05
阅读次数:
127
KMP子串匹配算法精髓在确定next数组上,确定next数组注意以下几点: next[0]=-1; next[1]=0; 前面两点是固定的。后面的需要通过递归的思想推导出来: 试想next[j]=k,那么next[j+1]应该等于多少,如果string[j]=string[next[j]],那就说明 ...
分类:
编程语言 时间:
2019-02-22 18:29:56
阅读次数:
180
一个串建SAM,一个串在上面跑DP 需要注意,走到当前节点的时候,有可能走的是近路,并不能把当前节点表示的所有子串匹配,这个时候就要记录一下走的步数(类似caioj那题),那些被当前点表示的,长度不超过步数的子串才有资格更新答案。 这个东西我用g来维护 然后他去更新其他人就没有这个限制了,用h表示覆 ...
分类:
其他好文 时间:
2018-12-02 16:10:00
阅读次数:
236