最長回文子字串的長度

2022-09-16 03:57:08 字數 966 閱讀 9310

回文是指正著讀和倒著讀,結果相同,比如abcba或abba,題目是要在乙個字串中要到最長的回文子串

首先我們可以考慮一般的情況,先從字串中取出任意乙個子串,判斷其是不是回文字串,這種方法可以稱之為暴力求解法,故時間複雜度可以達到o(n3

)**如下所示:

import j**a.util.*;

public

class

palindrome

return

true

; }

public

int getlongestpalindrome(string a, int

n) }}

return

maxlen;

}}

當然我們也可以使用時間複雜度低一點的方法,譬如使用動態規劃求解,回文字串的子串也是回文,比如p[i,j](表示以i開始以j結束的子串)是回文字串,那麼p[i+1,j-1]也是回文字串。這樣最長回文子串就能分解成一系列子問題了。這樣需要額外的空間o(n^2),演算法複雜度也是o(n^2)。

首先定義狀態方程和轉移方程:

p[i,j]=0表示子串[i,j]不是回文串。p[i,j]=1表示子串[i,j]是回文串。

string findlongestpalindrome(string &s)  

;

for(int i=0;i//

初始化準備

} for(int len=3;len//

子串長度

for(int i=0;i<=length-len;i++)//

子串起始位址

} if(maxlength>=2

)

return

s.substr(start,maxlength);

return

null;

}

字串的最長回文長度

題目描述 輸入乙個字串,輸出該字串中回文子字串的最大長度。以mid為中心用另兩個指標分別向前和向後移動,直到指標到達字串兩端或者兩個指標所指的字元不相等。分為中心對稱和鏡面對稱兩種對稱形式,t n o n2 include include include define n 200000 int ma...

字串 最長回文子串

最長回文子串 回文子串 即正著看和倒著看相同的子串,如 abcba yyxyy。由於此類題目為面試筆試常考題目,所以現在就來整理一下啦。1 暴力求解法 最直接的想法就是暴力求解,但是我們可以看到下面的 時間複雜度是o n 3 string findlongeststring string str 暴...

字串 最長回文子串

介紹一下幾個概念 就是從左往右和從右往左讀是一樣的。就如標語 我為人人,人人為我 子串,顧名思義,就是在原字串中的子集,就叫子串。串就是不能分割的,就是連在一起,這個要區別與子串行,子串行就是一段 一段的。列舉各個起點和終點,然後進行判斷該子串是否為回文,最後就是更新最長的回文串。列舉起點和終點 o...