首页 > 代码库 > LeetCode:Longest Palindromic Substring

LeetCode:Longest Palindromic Substring

Longest Palindromic Substring

Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one unique longest palindromic substring.

动态规划解法 

T(n) = O(n^2)  ,S(n) = O(n^2);

Solution:

public class Solution {    private static int MAX_LENGH = 1000;    public String longestPalindrome(String s) {        char[] ch = s.toCharArray();        int len = s.length();        int maxLen = 1;        int longestBegin = 0;        boolean[][] table = new boolean[len+1][len+1];        // Arrays.fill(table,false);                for(int i = 0; i < len; i++){            table[i][i] = true;        }        for(int i = 0; i < len-1; i++){            if(ch[i] == ch[i+1]){                table[i][i+1] = true;                longestBegin = i;                maxLen = 2;            }        }        for(int l = 3 ; l <= len; l++){            for(int i = 0; i< len - l+1; i++){                int j = i + l -1;                if(ch[i] == ch[j] && table[i+1][j-1]){                    table[i][j] = true;                    maxLen = l;                    longestBegin = i;                }            }        }        return s.substring(longestBegin,longestBegin + maxLen);    }}

 

O(n) 线性时间复杂度算法

极其酷炫掉渣天的方法

http://leetcode.com/2011/11/longest-palindromic-substring-part-ii.html