题目:输入一个字符串,求其中最长的回文子串。子串含义:在原串中连续出现的字符串片段。回文的含义就是正着看和倒着看相同,如aabb,yyxyy。在判断时,应该忽略所有出现的标点和空格,且忽略大小写,但应该保持原样输出。输入字符长度不超过5000,且单独占一行。应该输出最长的回文串,如果有多个,输出起始位置最靠左的。
样例输入:Confuciuss say:Madam,I'm Adam.
...
分类:
其他好文 时间:
2015-04-09 08:52:53
阅读次数:
136
描述小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进。这一天,他们遇到了一连串的字符串,于是小Hi就向小Ho提出了那个经典的问题:“小Ho,你能不能分别在这些字符串中找到它们每一个的最长回文子串呢?”小Ho奇怪的问道:“什么叫做...
分类:
其他好文 时间:
2015-04-08 21:24:44
阅读次数:
131
题目大意给出一个字符串,求出这个字符串的最长回文子串。思路前来学习著名的Manacher算法。
这是一个线性时间求出回文子串的算法。具体来说,对于我们弄出的一个回文串,它对于后面的串并不是,没有用的,因为它的左右两侧是相同的,那么自然可以用左边的信息去更新右边。
设p[i]p[i]为第ii个字符的回文半径,_max\_max为max{p[i]+i}max\{p[i] + i\},也就是最远可以更...
分类:
其他好文 时间:
2015-04-07 09:47:35
阅读次数:
119
先从标准输入读取一个整数N(N,代表我给你的字符串的个数,然后接下来的就是我要给你的那N个字符串(字符串长度而你要告诉我你的答案的话,只要将你计算出的最长回文子串的长度按照我给你的顺序依次输出到标准输出就可以了!你看这就是一个例子。”
提示一 提示二 提示三 提示四
样例输入
3
abababa
aaaabaa
acacdas
样例输出
7
5
3
#include...
分类:
其他好文 时间:
2015-04-03 17:31:50
阅读次数:
141
回文串包括奇数长的和偶数长的,一般求的时候都要分情况讨论,这个算法做了个简单的处理把奇偶情况统一了。算法的基本思路是这样的,把原串每个字符中间用一个串中没出现过的字符分隔开来(统一奇偶),用一个数组p[ i ]记录以 str[ i ] 为中间字符的回文串向右能匹配的长度。先看个例子原串: w a a...
分类:
编程语言 时间:
2015-04-01 15:08:14
阅读次数:
136
题目连接:点击打开链接
解题思路:
manacher算法的模板题。
完整代码:
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
typedef unsigned long long LL;
const int MOD = ...
分类:
编程语言 时间:
2015-03-31 18:09:37
阅读次数:
176
题目连接:点击打开链接
解题思路:
manacher算法模板题。
完整代码:
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
typedef unsigned long long LL;
const int MOD = i...
分类:
编程语言 时间:
2015-03-31 18:05:25
阅读次数:
179
最长回文子串,学习了一下manacher算法
#include
#include
char s[1000005];
int next[1000005];
int n;
//i,j两个指针所指的位置可以保证已经是该指针之前的串里,最优的了
int min(int a,int b){
if(a<b) return a;
return b;
}
int max(int a,int b...
分类:
其他好文 时间:
2015-03-28 13:04:30
阅读次数:
135
学习了一下manacher回文
#include
#include
#include
using namespace std;
char s[110005];
char news[220005];
int p[220005];
int n;
void manacher(){
n=strlen(s);
int l=0;
news[l++]='$';
news[l++]='#';
f...
分类:
其他好文 时间:
2015-03-28 13:02:04
阅读次数:
126