本文主要是介绍51Nod_1088 最长回文子串,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
51Nod_1088 最长回文子串
http://www.51nod.com/Challenge/Problem.html#!#problemId=1088
题目
回文串是指aba、abba、cccbccc、aaaa这种左右对称的字符串。输入一个字符串Str,输出Str里最长回文子串的长度。
输入
输入Str(Str的长度 <= 1000)
输出
输出最长回文子串的长度L。
样例输入
daabaac
样例输出
5
C++程序
#include<iostream>
#include<cstring>using namespace std;
const int N=1000;
char s[N+1]; int main()
{ int i,j,l,r,ans,len,t1,t2; cin>>s; len=strlen(s); ans=0; for(i=0;i<len;i++) { l=i;r=i; t1=t2=0; while(l-1>=0&&r+1<len&&s[--l]==s[++r]) t1++; t1=t1*2+1; l=i;r=i+1; while(l>=0&&r<len&&s[l]==s[r]) { t2++; l--; r++; } t2=t2*2; ans=max(ans,max(t1,t2)); } cout<<ans<<endl; return 0;
}
这篇关于51Nod_1088 最长回文子串的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!