摘要:
求最长回文串,如果是暴力的方法的话,会枚举每个字符为中心,然后向两边检测求出最长的回文串,时间复杂度在最坏的情况下就是0(n^2),为什么时间复杂度会这么高,因为对于每一个作为中心的字符的检测是独立的,没有充分利用前面比较过信息,这就类似暴力求字符串的匹配最糟糕的情况下是0(n*m),然后通过预处理的信息把时间复杂度降低也就是kmp算法;MANACHER算法:先假设所有回文串都是以某个字符为中心的,即回文串的长度都是奇数;lc[ i ]保存的是以位置i的字符为中心的最长回文串到最右边的距离先假设以知lc[i],(0p那么直接以x为中心进行检测,并更新k;如果x=p-x+1) 那么lc[x]至少 阅读全文
posted @ 2013-06-27 18:42
Rabbit_hair
阅读(531)
评论(0)
推荐(0)
摘要:
hdu4333/*题意:字符串s[0..n-1],每次把最后一个字符放到前面,求形成的字符串比最初串分别小,相同,大于的个数因为是为了练习扩展KMP所以肯定是扩展KMP,为了循环方便,在后面复制字符串,求出next[]数组后,如果next[i]>n那么肯定相等,如果小于就判断s[ next[i] ]和 s[ i+next[i] ]的大小判断trick:题目求得是形成的不同的字符串的个数,可以知道相等的字符串肯定只有一个,而从0..n-1,第二个next[i]大于n那么这个i就是该字符串的循环节;*/#include#include#include#include#include#incl 阅读全文
posted @ 2013-06-27 00:58
Rabbit_hair
阅读(865)
评论(0)
推荐(1)

浙公网安备 33010602011771号