[LintCode] Longest Palindromic Substring
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
public String longestPalindrome(String s) { // Write your code here if(s.length() == 0 || s == null) return ""; int start = 0; int end = 0; for(int i = 0; i < s.length(); i++) { int len1 = expand(s, i, i); int len2 = expand(s, i, i+1); int len = Math.max(len1, len2); if(len > end - start){ start = i - (len - 1) / 2; end = i + (len) / 2; } } return s.substring(start, end + 1); } public int expand(String s, int i, int j) { while(i>=0 && j<s.length() && s.charAt(i)==s.charAt(j)){ i--; j++; } return j - i - 1; } |