南邮 OJ 1968 最长回文子串的长度

来源:互联网 发布:数据库分组多条件查询 编辑:程序博客网 时间:2024/05/16 12:49

最长回文子串的长度

时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte
总提交 : 391            测试通过 : 84 

比赛描述

输入一个字符串,求出其中最大回文子串的长度。子串的含义是:在原串中连续出现的字符串片段。回文的含义是:正着看和倒着看相同,如abba和yyxyy。在判断时,应该忽略所有标点符号和空格,且忽略大小写,但输出应保持原样(在回文串的首部和尾部不要输出多余字符)。

输入

输入字符串长度不超过5000,且占据单独的一行。

输出

输出最长回文串的长度,该回文串不包括所有标点符号和空格。

样例输入

Confuciuss say: Madam,I'm Adam.

样例输出

11

提示

undefined

题目来源

NUPT




tring>using namespace std;int main(){int i,j,n,max;string s;getline(cin,s);n=(int)s.length();for(i=0,j=0;i<n;i++){if(s[i]>='a' && s[i]<='z'){s[j++]=s[i];}else if(s[i]>='A' && s[i]<='Z'){s[j++]=s[i]-'A'+'a';}}n=j;max=1;for(i=1;i<n;i++){for(j=1; i-j>=0 && i+j<n && s[i+j]==s[i-j]; j++);j--;if(max<2*j+1){max=2*j+1;}for(j=1; i-j>=0 && i-1+j<n && s[i-j]==s[i-1+j]; j++);j--;if(max<2*j){max=2*j;}}cout<<max<<endl;}



0 0