1. 程式人生 > >5. Longest Palindromic Substring最大回文子串

5. Longest Palindromic Substring最大回文子串

判斷 long 由於 多少 com 開頭 longest gpo post

    int sta = 0;
    int max = 1;
    public String longestPalindrome(String s) {
        /*
        判斷回文有兩種:
            1.最大回文子序列求長度:
                用動態規劃,dp[sta][end] 代表開頭為sta、結尾為end的部分最大回文子序列的長度是多少
                dp[sta][end] = (s.charAt(sta)==s.charAt(end))?dp[sta+1][end-1]+2:max(dp[sta][end-1],dp[sta+1][end])
2.最大回文子串: 用兩遍延伸法,分為兩種情況,奇數子串和偶數子串: 把所有字符當做中軸,遍歷一遍,每當長度超過,就更新結果
*/ int l = s.length(); if (l==0) return ""; for (int i = 0; i < l; i++) { //奇數情況 helper(s,i,i); //偶數情況 helper(s,i,i+1); } //這裏註意是前閉後開區間,註意區間 return s.substring(sta,sta+max); } public void helper(String s,int
left,int right){ //從中軸向兩邊延伸,註意最後的結果多了一次 while (left >= 0&& right < s.length()&& s.charAt(left)==s.charAt(right)) { left--; right++; } //由於left多減了一次,right多加了一次,所以處理要註意 if (max < right-left-1) { max
= right-left-1; sta = left+1; } }

最大回文子序列在:http://www.cnblogs.com/stAr-1/p/7444994.html

5. Longest Palindromic Substring最大回文子串