找出最长回文字子串的长度

来源:互联网 发布:杭州网络策划 编辑:程序博客网 时间:2024/06/11 04:58

 题目:给定一个字符串,求出它的最长回文子串的长度。


如何进行高效判断呢?如果一段字符串是回文串,那么以某个子字符为中心的前缀和后缀必定是相同的,因此,我们可以枚举中心位置,然后再在改位置上拓展,记录并更新得到最新的的最长回文子串。


代码如下;

  

int  LongestPalindrome(const char *s,int n){      int i,j,max,c;     if(s==0||n<1){   return 0;}max=0;//以i为回文中心位置for(i=0;i<n;i++){   //回文数长度为奇数for (j=0;(i-j>=0)&&(i+j<n);++j){   if(s[i-j]!=s[i+j]){    break;}c=j*2+1;}if(c>max){    max=c;}//回文长度为偶数for(int j=0;(i-j>=0)&&(i+j+1<n);++j){    if(s[i-j]!=s[i+j+1];  {     break;  }    c=j*2+2; }  if(c>max)  {     max=c;  }}return max;}

 

0 0