返回最长回文子串的长度中心扩散法
Posted 勇敢*牛牛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了返回最长回文子串的长度中心扩散法相关的知识,希望对你有一定的参考价值。
返回最长回文子串的长度
题目描述:
给定一个仅包含小写字母的字符串,求它的最长回文子串的长度。 所谓回文串,指左右对称的字符串。
所谓子串,指一个字符串删掉其部分前缀和后缀(也可以不删)的字符串 (注意:记得加上while处理多个测试用例)
输入描述:
输入一个仅包含小写字母的字符串
输出描述:
返回最长回文子串的长度
示例1
输入:
cdabbacc
输出:
4
说明:
abba为最长的回文子串
测试:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int fun(char *a,int left,int right)
while(a[left] == a[right] && left>=0 && right<strlen(a))
left--;
right++;
return right-left-1;
int main()
char a[] = "cdabbacc";
int i=0,m=0;
for(i=0;i<strlen(a);i++)
int len_1 = fun(a,i,i);
int len_2 = fun(a,i,i+1);
int len = len_1>len_2 ? len_1 : len_2;
m = m>len?m:len;
printf("%d",m);
return 0;
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int fun(char *a,int left,int right)
while(a[left] == a[right] && left>=0 && right<strlen(a))
left--;
right++;
return right-left-1;
int main()
char a[1000] = "cdabbacc";
int i=0;
while(gets(a))
int m=0;
for(i=0;i<strlen(a);i++)
int len_1 = fun(a,i,i);
int len_2 = fun(a,i,i+1);
int len = len_1>len_2 ? len_1 : len_2;
m = m>len?m:len;
printf("%d",m);
return 0;
以上是关于返回最长回文子串的长度中心扩散法的主要内容,如果未能解决你的问题,请参考以下文章