POJ 2406其实就是一个简单的kmp应用:ans = n % (n - f[n]) == 0 ? n / (n - f[n]) : 1其中f是失配函数 1 //#pragma comment(linker, "/STACK:1677721600") 2 #include 3 #include ....
分类:
其他好文 时间:
2015-07-26 22:13:05
阅读次数:
114
首先我们一般求子串的位置的时候,我们可以使用这样的方法/*
*功能:这个是定长的串的顺序存储
*时间:2015年7月15日17:16:01
*文件:SString.h
*作者:cutter_point
*/#ifndef SSTRING_H
#define SSTRING_H#define MAXSTRLEN 255class SString
{
unsigned char* ch; //...
分类:
编程语言 时间:
2015-07-26 20:54:46
阅读次数:
298
串(string)是由零个或多个宇符组成的有限序列,又名叫字符串。定义的解释:
??串中的字符数目n称为串的长度,定义中谈到“有限”是指长度n是一个有限的数值。
??零个字符的串称为空串(null string),它的长度为零,可以直接用两双引号一表示,也可以用希腊Φ字母来表示。
??所谓的序列,说明串的相邻字符之间具有前驱和后继的关系。下面是串的一些概念性东西:??空格串,是只包含空格的串。...
分类:
编程语言 时间:
2015-07-26 19:17:34
阅读次数:
132
strStr()函数的用途是在一个字符串S中寻找某个字串P第一次出现的位置,并返回其下标,找不到时返回-1。最简单的办法就是找出S所有的子串和P进行比较,然而这个方法比较低效。假设我们从S的下标0和P的下标0开始对每个字符进行比较,如果相等则下标增加,比较后面的字符。如果两者一直相等直到P的下标达到最大值,则表示在S中找到了P,并且第一次出现的位置为0,返回0,但如果在中间某个位置两个字符不相等时...
分类:
编程语言 时间:
2015-07-26 17:27:26
阅读次数:
136
ACM中常用算法—-字符串ACM中常用的字符串算法不多,主要有以下几种:
Hash
字典树
KMP
AC自动机
manacher
后缀数组
EX_KMP
SAM(后缀自动机)
回文串自动机
下面来分别介绍一下:0. Hash字符串的hash是最简单也最常用的算法,通过某种hash函数将不同的字符串分别对应到不同的数字.进而配合其他数据结构或STL可以做到判重,统计,查询等操作.
#### 字符串的h...
分类:
编程语言 时间:
2015-07-26 12:42:25
阅读次数:
297
我的方法是将题目中给的那个串(anniversary)拆分成三段。枚举所有情况,也就100多种的样子。每一种情况去判断在输入的串中能不能找到这三个串,并且不相交。o(︶︿︶)o 唉,思路很快就有了,代码写得丑,找错找了半天,最终在场外Submit的1A了。写题时候脑瘫,还搞了个KMP上去。。。其实长...
分类:
其他好文 时间:
2015-07-26 09:47:30
阅读次数:
209
有了KMP和Trie的基础,就可以学习神奇的AC自动机了。AC自动机其实就是在Trie树上实现KMP,可以完成多模式串的匹配。 AC自动机 其实 就是创建了一个状态的转移图,思想很重要。 推荐的学习链接:http://acm.uestc.edu.cn/bbs/read.php?t...
分类:
其他好文 时间:
2015-07-23 19:29:50
阅读次数:
126
Count the stringTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 6062Accepted Submission(s): 2810Pr...
分类:
编程语言 时间:
2015-07-23 17:20:52
阅读次数:
115
题意:给你两个串,问你第二个串是从第一个串的什么位置开始完全匹配的? kmp裸题,复杂度O(n+m)。
当一个字符串以0为起始下标时,next[i]可以描述为"不为自身的最大首尾重复子串长度"。
当发生失配的情况下,j的新值next[j]取决于模式串中T[0 ~ j-1]中前缀和后缀相等部分的长度, 并且next[j]恰好等于这个最大长度。
防止超时,注意一些细节。。
另外:尽量少用str...
分类:
编程语言 时间:
2015-07-23 00:46:22
阅读次数:
141
BM 算法是一个较优的模式匹配算法。一般,如果不考虑模式串的长度,一个具有时间复杂度O(n)的算法应该是最优的了,但是事实不是如此。BM算法可以实现更高效率的模式匹配。分析和实验说明,BM匹配算法对于那些字符集比较大,而模式串中出现的字符比较少的时候,工作效率最快。而且,考虑KMP匹配方式的优化,可...
分类:
编程语言 时间:
2015-07-22 22:31:06
阅读次数:
178