L-最长回文子串
题目描述
输入一个字符串Str,输出Str里最长回文子串的长度。
回文串:指aba、abba、cccbccc、aaaa这种左右对称的字符串。
串的子串:一个串的子串指此(字符)串中连续的一部分字符构成的子(字符)串例如abc这个串的子串:空串、a、b、c、ab、bc、abc
输入格式
输入Str (Str的长度<=1000)
输出格式
输出最长回文子串的长度L。
Sample Input
daabaac
Sample Output
5
思路
#include<stdio.h>
#include<string.h>
int pd(char s[],int l,int r)
{
int mid=(l+r)/2;
for(int i=l,j=0;i<=mid;i++,j++)
{
if(s[i]!=s[r-j])
return 0;
}
return 1;
}
int main()
{
char s[1005];
gets(s);
int l=strlen(s);
int ans=0;
for(int i=0;i<l;i++)
{
for(int j=l-1;j>=i;j--)
{
if(pd(s,i,j))
ans=ans>j-i+1?ans:j-i+1;
}
}
printf("%d",ans);
return 0;
}