背景
最近开始研究算法,于是在leetcode上做算法题,第五题Longest Palindromic Substring便是关于回文子串的。
什么是回文子串
回文字符串是指将该字符串前后颠倒之后和该字符串一样的字符串。例如:a,aaaa,aba,abba…
最长回文子串
要求最长回文子串,就需要遍历每一个子串,...
分类:
编程语言 时间:
2015-08-19 16:57:00
阅读次数:
171
这里先记录一下,方便以后复习用。
引子:给定一个字符串str,让你求出最长的回文子串的长度。...
分类:
其他好文 时间:
2015-08-18 14:17:56
阅读次数:
100
背景
最近开始研究算法,于是在leetcode上做算法题,第五题Longest Palindromic Substring便是关于回文子串的。
什么是回文字串
回文字符串是指将该字符串前后颠倒之后和该字符串一样的字符串。例如:a,aaaa,aba,abba…
最长回文子串
要求最长回文子串,就需要遍历每一个子串,时间复杂度是O(N²);判断字串是不是回文,时间复杂度是...
分类:
编程语言 时间:
2015-08-18 10:18:51
阅读次数:
172
Manacher算法
【题目】
给定一个字符串str,返回str中的最长回文子串的长度。
【举例】
str=“123”。其中的最长回文子串“1”或者“2”或者“3”,所以返回1。
str=“abc1234321ab”。其中的最长回文子串“1234321”,所以返回7。
【进阶题目】
给定一个字符串str,想通过添加字符的方式使得str整体都变成回文字符串,但要求只能在str的末尾添加...
分类:
编程语言 时间:
2015-08-15 16:39:59
阅读次数:
146
http://acm.hdu.edu.cn/showproblem.php?pid=5371
Problem Description
Hotaru Ichijou recently is addicated to math problems. Now she is playing with N-sequence.
Let's define N-sequence, which is...
分类:
编程语言 时间:
2015-08-13 14:32:32
阅读次数:
128
http://acm.hdu.edu.cn/showproblem.php?pid=5371/*先用Manacher算法得出最长回文子串,然后用set维护ans的值对所有回文的长度进行排序, 那么之后的点如果覆盖了最接近的点那么那么点肯定是覆盖了当前点,用二分得到最近不大于u的距离S.upper_b...
分类:
其他好文 时间:
2015-08-12 21:36:40
阅读次数:
106
http://acm.hdu.edu.cn/showproblem.php?pid=5340/*Manacher算法:O(n) 实现最长回文子串算法实现:先向原字符串中插入一个原来串不存在的字符,一般用'#',再O(n)遍历一遍,用一个数组p[i]来记录以str[i]为中心的回文半径(注意str[i...
分类:
编程语言 时间:
2015-08-12 16:41:34
阅读次数:
126
【题目】给定一个字符串str,返回str中的最长回文子串的长度。【举例】str=“123”。其中的最长回文子串“1”或者“2”或者“3”,所以返回1。str=“abc1234321ab”。其中的最长回文子串“1234321”,所以返回7。【要求】如果str长度为N,时间复杂度为O(N)。题目分析:1...
分类:
编程语言 时间:
2015-08-11 21:17:51
阅读次数:
153
题目传送门关于求解最长回文子串,有dp做法,也有同样n^2的但只用O(1)的空间,还有KMP,后缀数组?? 1 int main(void) { 2 while (scanf ("%s", str + 1) == 1) { 3 int len = strlen (st...
分类:
其他好文 时间:
2015-08-07 21:51:49
阅读次数:
119
题意:给你一个字符串问能否拆分为三个回文字符串?能就输出yes,否则输出no。知识补充:最长回文子串算法(Manacher算法):求解最长回文子串的线性时间复杂度算法,主要是通过中心扩展的方法极大地避免了重复计算。实现如下:
为了避免对字符串奇偶数的讨论,先对字符串做预处理如下:
规则为在字符间和两边插入'#'字符,为了避免越界处理,最两边插入'^'和'$'字符。
原本字符串为:asd
预处理后为:...
分类:
其他好文 时间:
2015-08-04 13:37:34
阅读次数:
121