LeetCode-【動的計画】-最長回文サブストリング
文字列を指定 s,見つかる s で最も長い文字列を返します.君は仮定できる s の最大長さは1000です.
例1:
例2:
问题解:回文の子の列の长さは少なくとも2で、通常の考え方はすべての回文の子の列を列挙して、长さの最も长いそれは结果で、しかしこのようにして缲り返す比较ができて、私达は2つの位置の比较の结果を记录することができるかどうかを考えて、このように子の列が延长する时、直接延长の位置の间の文字列が回文であるかどうかを判断することができて、もし回文ならば、また、延長位置文字が同じであれば、回文サブストリングの長さとその開始位置を直接更新し、長さの最大値を絶えず比較することで、最後にサブストリングの開始位置と長さでサブストリングを切り取ればよい.
例1:
: "babad"
: "bab"
: "aba" 。
例2:
: "cbbd"
: "bb"
问题解:回文の子の列の长さは少なくとも2で、通常の考え方はすべての回文の子の列を列挙して、长さの最も长いそれは结果で、しかしこのようにして缲り返す比较ができて、私达は2つの位置の比较の结果を记录することができるかどうかを考えて、このように子の列が延长する时、直接延长の位置の间の文字列が回文であるかどうかを判断することができて、もし回文ならば、また、延長位置文字が同じであれば、回文サブストリングの長さとその開始位置を直接更新し、長さの最大値を絶えず比較することで、最後にサブストリングの開始位置と長さでサブストリングを切り取ればよい.
class Solution {
public String longestPalindrome(String s) {
int l=s.length();
if(l==0)
return "";
int maxl=0;
int start=0;
int end=0;
boolean[][] p=new boolean[l][l];
for(int i=l;i>=0;i--){
for(int j=i;j