题目描述:
给定一个仅包含小写字母的字符串,求它的最长回文子串的长度。
所谓回文串,指左右对称的字符串。
所谓子串,指一个字符串删掉其部分前缀和后缀(也可以不删)的字符串
(注意:记得加上while处理多个测试用例)
输入描述:
输入一个仅包含小写字母的字符串
输出描述:
返回最长回文子串的长度
输入:
cdabbacc
输出:
4
说明:
abba为最长的回文子串
#include
#include
int expandAround(char * str, int left, int right)
{
while(str[left] == str[right] && left >= 0 && right < strlen(str))
{
left--;
right++;
}
//printf("expandAround = %d\n", right - left - 1);
return right - left - 1;
}
int max(int a, int b)
{
if(a > b)
return a;
return b;
}
int main()
{
char str[1000];
while(gets(str))
{
int m = 0;
for(int i = 0; i < strlen(str); i++)
{
int len1 = expandAround(str, i, i); //以i为中心向两边扩散
int len2 = expandAround(str, i, i + 1);
int len = max(len1, len2);
m = max(m, len);
}
//printf("%s\n", str);
printf("%d\n", m);
}
return 0;
}