一、判断一个字符串是否为回文字符串(aba) 二、求一个字符串的最长回文字符串长度并输出 1)暴力枚举 2)确定字符串中心,向两边扩展枚举 注意 i为字符串中心,j为向两边扩展的长度 法一: 法二: ...
分类:
其他好文 时间:
2016-09-03 14:50:09
阅读次数:
140
求最长回文子串: 回文串是指正着读和反过来读都一样的字符串。 方法: 1. 为了统一解题方法,避免字符串长度奇偶对解题方法的影响,加入了填充字符。若原来的字符串长度为n,则新的字符串长度为2n+1。 2. pos+p[pos] 表示的是目前所有回文子串中,向右达到的最远位置。 3. 先利用对称性,找 ...
分类:
其他好文 时间:
2016-08-31 00:45:22
阅读次数:
156
manacher:可以解决最长回文问题。
算法:1.首先,将字符串的每个字符左右加入#,并在s0位置加入*(如果字符串中本身含有这些,则换成未出现过的字符),此时字符串的长度为len+len+3,即加...
分类:
编程语言 时间:
2016-08-29 15:38:32
阅读次数:
535
Manacher算法O(n) 因为对于偶回文,是需要从虚轴扩充,ab,ba,所以如下: 先把原字符串处理,都加上一个标记符,比如#(特殊字符任何都可以,对于计算结果不会有影响) 1221-->#1#2#2#1# 121-->#1#2#1# 按照处理后的字符串求它的最长回文串长度m,所以原始字符串最长 ...
分类:
编程语言 时间:
2016-08-28 17:57:09
阅读次数:
233
求最长回文子串的裸题,搞竞赛的时候遇到过各种花样的变式。
n方的朴素算法已经烂大街了,推荐使用O(n)的算法,只可惜很久没用过manacher算法,不会写了,所以花了一段时间温故知新。
manacher算法原理不了解的道友可以看这篇文章:...
分类:
其他好文 时间:
2016-08-24 15:54:14
阅读次数:
167
最长回文
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 5158 Accepted Submission(s): 1755
Problem Description
给出一个只由小写英文字符a,b,c...y...
分类:
编程语言 时间:
2016-08-24 14:46:02
阅读次数:
189
题目链接 http://acm.hust.edu.cn/vjudge/problem/19462 解题思路 把字符串翻转,与原字符串求LCS。 注意空串处理。 代码 ...
分类:
其他好文 时间:
2016-08-23 01:07:43
阅读次数:
147
Manacher算法是求回文串最高效的算法,能在线性时间内求出以每一个字符为中心的最长回文串。 首先,我们都能想出O(N^2)求出每一个字符为中心的最长回文串的算法。那么我们考虑这样一种情况。 如果一个回文串内包含了回文串。那么是否可以减少重复的计算。 比如 abaaba 这个字符串,要求他的最长回 ...
分类:
编程语言 时间:
2016-08-21 15:10:15
阅读次数:
283
bzoj2160拉拉队排练 题意: 给一个字符串,求最长的k个回文子串(此处回文子串长度必须为奇数)长度的乘积。字符串长度≤1000000 题解: 先用manacher预处理出第i个字符为中心的最长回文子串一端长度p[i],然后cnt[1]++,cnt[2*p[i]+1]--,最后cnt[i]+=c ...
分类:
其他好文 时间:
2016-08-17 22:38:11
阅读次数:
118