一道KMP题目 求出next数组后就可以得知一个字串的最长前缀-后缀字串 ...
分类:
其他好文 时间:
2018-10-04 10:36:57
阅读次数:
136
模式串匹配,顾名思义,就是看一个串是否在另一个串中出现,出现了几次,在哪个位置出现; p.s. 模式串是前者,并且,我们称后一个 (也就是被匹配的串)为文本串; 在这篇博客的代码里,s1均为文本串,s2均为模式串; 一般地,文本串长度不小于匹配串;(否则无意义) 很显然可以得到一个暴力的做法 : 时 ...
分类:
编程语言 时间:
2018-10-04 10:21:24
阅读次数:
214
一、常用模块 1、re模块 二、re模块 1、re模块是用来操作正则表达式 2、正则表达式——用来字符串匹配的 (1)字符组:[字符组] 例如[0123fdsa456*/-] [0-9] 等同于[0123456789] [a-z] 匹配小写字母 [A-Z]匹配大写字母 (2)特殊的元字符 (3)量词 ...
分类:
编程语言 时间:
2018-10-04 10:10:31
阅读次数:
189
sub[ ]代表子串,str[ ]代表原串,next[ ]代表当sub[i] != str[j]时,子串需要跳到的地方,实现代码如下: 获取next数组的代码: KMP实现的代码: 练习题:Oulipo-Poj ...
分类:
编程语言 时间:
2018-10-02 22:27:54
阅读次数:
213
UVALive 3026 KMP中next[]数组的应用; 题意:给出一个字符串,问该字符串每个前缀首字母的位置和该前缀的周期。 思路:裸KMP直接上就是了; 设该字符串为str,str字符串的长度为len,next[]的有关前缀的周期的性质: 如果len % (len - next[len]) = ...
分类:
其他好文 时间:
2018-10-02 22:07:40
阅读次数:
181
<题目链接> 题目大意: 有一个字符串A,一次次的重写A,会得到一个新的字符串AAAAAAAA.....,现在将这个字符串从中切去一部分得到一个字符串B,例如有一个字符串A="abcdefg".,复制几次之后得到abcdefgabcdefgabcdefgabcdefg....,现在切去中间红色的部分 ...
分类:
其他好文 时间:
2018-10-02 20:38:39
阅读次数:
103
【KMP简述】 主串长度为n,模式串长度为m,朴素的算法下,对于主串S的每一位S[i]都要往后扫描m个字符,所以时间复杂度为O(nm)。 对于KMP算法,它的时间复杂度降到了O(m+n)。原理是用一个next数组预处理了主串的局部匹配信息(最长相同前后缀长度),在进行主串与模式串的匹配时,保证了主串 ...
分类:
编程语言 时间:
2018-10-02 17:36:05
阅读次数:
207
/* 上来的想法是KMP的思想,但是具体不会KMP的实现,c++STL的string 中的find?但是要注意A的长度与B的长度的问题,首先A的长度要大于B的长度 分为三个阶段: 1. A比B的长度要短,这时A要不断增加。 2. A 比 B 刚好长, 3, A 比 B 刚好长的长度 + 1个A的长度... ...
分类:
其他好文 时间:
2018-10-01 18:24:04
阅读次数:
173
字符串 abcd abc abcd abc 匹配串 cdabcd 匹配串的 next 0 0 0 0 1 2; 开始匹配 abcd abc abcd abc cd abc d a,d 匹配失败 next 数组进行移动 abcd abc abcd abcd c dabcd 再次匹配 模板 ...
分类:
编程语言 时间:
2018-10-01 11:54:39
阅读次数:
215