题意:给出一个字符串,问最少能够划分成多少个回文串dp[i]表示以第i个字母结束最少能够划分成的回文串的个数dp[i]=min(dp[i],dp[j]+1)(如果从第j个字母到第i个字母是回文串)想不明白的还是初始化初始化为:dp[i]=i+1,后来= =,发现应该是这样的从第1个字母到第i个字母最...
分类:
其他好文 时间:
2015-03-30 01:29:17
阅读次数:
140
问题描述:
输入一个字符串,求出其中最大的回文子串。子串的含义是:在原串中连续出现的字符串片段。回文的含义是:正着看和倒着看相同,如abba和yyxyy。
解析:
这里介绍O(n)回文子串(Manacher)算法
算法基本要点:首先用一个非常巧妙的方式,将所有可能的奇数/偶数长度的回文子串都转换成了奇数长度:
在每个字符的两边都插入一个特殊的符号。比如 abba 变成 #a#b#b#a#, aba变成 #a#b#a#。
为了进一步减少编码的复杂度,可以在字符串的开始加入另一个特殊字符,这样就不用...
分类:
编程语言 时间:
2015-03-29 15:08:35
阅读次数:
305
紫皮书!题意:给你小写字母组成的字符串,让你划分为尽量少的回文串。思路:dp[i] 为0 - i 划分的最小的回文串的个数 则 dp[i] = min{dp[i],dp[j]+1} 如果 j+1 到 i 是回文串的话 (PS: 是 j+1 到 i 是回文串 而不是 j 到 i 是回文串)先把 从 i...
分类:
其他好文 时间:
2015-03-29 09:24:41
阅读次数:
131
1215: I Wanna Be A Palindrome
时间限制: 2 Sec 内存限制: 128 MB
提交: 148 解决: 22
[提交][状态][讨论版]
题目描述
给出一个字符串,仅由小写字母组成。请找出是否仅删除其中的一个字母之后, 字符串变成回文串。
输入
输入第一行是一个整数 T,表示有 T 组数据。 每组数据占...
分类:
其他好文 时间:
2015-03-22 09:15:28
阅读次数:
201
P1题目描述: 判断一个环形字符串(或者减去一个字符之后)是否是回文串solution:1.hash 将字符串的前缀进行hash,然后将字符串翻转,再做一次hash,然后枚举对称轴,判断两边的hash值是否相等就可以了。 时间复杂度:\( O(n) \)2.manacher 将字符串倍...
分类:
其他好文 时间:
2015-03-21 17:04:24
阅读次数:
139
http://poj.org/problem?id=3974题意:求s的最长回文串。(|s|#include #include #include #include using namespace std;char s[2000050]; int len[2000050], T;int main() ...
分类:
其他好文 时间:
2015-03-19 14:37:22
阅读次数:
130
原题地址这道题巧妙地利用了先前回文串的信息来减少后面的回文串计算量。比如下面的字符串(圆圈代表字符)假设已经知道了某个字符的回文串情况(曲线连接的两个圆圈代表两个相同字符)思考:这能给后面的回文串计算带来什么帮助呢?一个巴掌拍不响,看看已知两个回文串有什么效果:是不是有点意思了?为了更加直观,我们给...
分类:
其他好文 时间:
2015-03-18 01:05:29
阅读次数:
259
Manacher算法,相当于求回文串。关于Manacher,转http://blog.sina.com.cn/s/blog_70811e1a01014esn.html现在进入正题:首先,在字符串s中,用rad[i]表示第i个字符的回文半径,即rad[i]尽可能大,且满足:s[i-rad[i],i-1...
分类:
其他好文 时间:
2015-03-16 12:34:51
阅读次数:
184
输入一个字符串,求出它的子串中最长的回文串。...
分类:
编程语言 时间:
2015-03-15 23:04:26
阅读次数:
165