1. DP, O(N^2) complexity.
https://github.com/csehao/LeetCode/blob/master/Java/LongestPalindrome.java
public class Solution {
public String longestPalindrome(String s) {
int len = s.length();
StringBuilder sb = new StringBuilder();
if(0 == len)
return sb.toString();
boolean[][] dp = new boolean[1001][1001];
int l = 0;
int u = 1;
for(int i = 0; i < len; ++i){
dp[i][i+1] = true;
}
for(int i = 0; i < len-1; ++i){
if(s.charAt(i) == s.charAt(i+1)){
dp[i][i+2] = true;
l = i;
u = i+2;
}
else{
dp[i][i+2] = false;
}
}
for(int d = 3; d <= len; ++d){
for(int i = 0; i<=len-d; ++i){
if(s.charAt(i) == s.charAt(i+d-1)){
dp[i][i+d] = dp[i+1][i+d-1];
if(dp[i][i+d] == true){
l = i;
u = i+d;
}
}
else{
dp[i][i+d] = false;
}
}
}
return s.substring(l, u);
}
}
No comments:
Post a Comment