leetcode第5題-最長回文サブ文字列
1456 ワード
タイトル:
例1:
例2:
中心拡張アルゴリズム:
回文中心の両側は互いにミラーリングされている.したがって、文字数が偶数の文字を含む文字の中心は、2文字の間にあることができる(例えば、「abba」の中心は2つの「b」の間にある)ため、回文はその中心から展開することができる.従って,2 n−1個のこのような中心がある.
コードは次のとおりです.
s
の文字列を指定し、s
の中で最も長い回文サブ列を見つけます.s
の最大長さは1000と仮定できます.例1:
: "babad"
: "bab"
: "aba" 。
例2:
: "cbbd"
: "bb"
中心拡張アルゴリズム:
回文中心の両側は互いにミラーリングされている.したがって、文字数が偶数の文字を含む文字の中心は、2文字の間にあることができる(例えば、「abba」の中心は2つの「b」の間にある)ため、回文はその中心から展開することができる.従って,2 n−1個のこのような中心がある.
コードは次のとおりです.
public class day04 {
public static void main(String[]args){
String str="nxlcuisdsdb";
String result=longestPalindrome(str);
System.out.println(result);
}
private static String longestPalindrome(String str) {
if(str==null || str.length()<1) return "";
if(str.length()==1)return str;
int start=0;int end=0;
for(int i=0;iend-start){
start=i-(len-1)/2;
end=i+len/2;
}
}
return str.substring(start,end+1);
}
private static int Center(String str, int left, int right) {
int l=left;int r=right;
while(l>=0 && r
O(n^2), :O(1)。