最长回文子串

Posted FlyingWarrior

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最长回文子串相关的知识,希望对你有一定的参考价值。

 

题目描述

 

对于一个字符串,请设计一个高效算法,计算其中最长回文子串的长度。

给定字符串A以及它的长度n,请返回最长回文子串的长度。

 
测试样例:
 
"abc1234321ab",12

返回
:7

 

解题思路

 

考虑用中心扩展法,即遍历每个字符依次比较其两侧的字符是否相等并记录,分两种情况:子串长度是奇数和偶数。算法时间复杂度为O(N2)

 

代码

 

 1 class Palindrome {
 2 public:
 3     int getLongestPalindrome(string str, int n) {
 4         int count = 0;  
 5         int max = 0; 
 6         if (str.empty() || n<1)
 7             return 0;
 8         for(int i=0;i<n;i++){
 9             for(int j=0;i+j<n&&i-j>=0;j++){
10                 if(str[i-j]!=str[i+j])
11                     break;
12                 count=j*2+1;
13             }
14             if(count>max)
15                 max=count;
16             for(int j=0;i+j+1<n&&i-j>=0;j++){
17                 if(str[i-j]!=str[i+j+1])
18                     break;
19                 count=j*2+2;
20             }
21             if(count>max)
22                 max=count;
23         }
24         return max;  
25     }
26 };

 

以上是关于最长回文子串的主要内容,如果未能解决你的问题,请参考以下文章

华为机试题 HJ85最长回文子串

最长回文字串暴力

Leetcode 5. 最长回文子串

找到最长的回文子串

最长回文子串(python)

字符串最长回文子串 ( 动态规划算法 ) ★