找出字符串中的最长的回文子串

Posted cofludy

tags:

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

 1 class Solution {
 2 public:
 3     string longestPalindrome(string s) {
 4         int maxLoc=0;
 5         int maxNum=1;
 6         const int stringSize=s.size();
 7         if(stringSize==1){
 8             return s;
 9         }
10         
11         for(int i=1; i!= 2*stringSize-1-1;++i){
12             int a, b;
13             int num=1;
14             if(i%2==0){     //even 
15                 a=(int)(i-1)/2;
16                 b=(int)(i+1)/2+1;
17                 num=1;
18             }
19             else{   //old
20                 a=(int)(i-1)/2;
21                 b=(int)(i+1)/2;
22                 num=0;
23             }
24             
25             while(a>=0 && b<=stringSize){
26                 if(s[a] == s[b]){
27                     num=num+2;
28                     a--;
29                     b++;
30                 }
31                 else{
32                     break;
33                 }
34             }
35             if(num>maxNum){
36                 maxNum=num;
37                 maxLoc=i;
38             }
39         }
40         
41         if(maxLoc%2==0){
42            return s.substr(maxLoc/2-(maxNum-1)/2, maxNum); 
43         }
44         else{
45             return s.substr(maxLoc/2+1-maxNum/2, maxNum);
46         }
47     }
48 };

 

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

找出最长回文子串之Manacher算法

最长回文子串

《算法竞赛入门经典》3.3最长回文子串

Leetcode 5 - 最长回文子串

最长回文子串(Longest Palindromic Substring)-DP问题

Java 求解最长回文子序列