回文是指正著讀和倒著讀,結果相同,比如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...