5. Longest Palindromic Substring
把每个位置分成odd和even两种情况 两个指针分别向两边查找,看看最长的palindrome在哪里 这样复杂度比较低 全部遍历的话 timelimit exceed
1 class Solution { 2 int max = 0; 3 int lo = 0; 4 public String longestPalindrome(String s) { 5 if(s == "") return s; 6 if(s.length() < 2) return s; 7 int a = 0, b = 0; 8 for(int i = 0; i < s.length(); i++) { 9 extendPalin(s, i, i); 10 extendPalin(s, i, i+1); 11 12 13 } 14 return s.substring(lo, lo + max); 15 16 } 17 18 public void extendPalin(String s, int i, int j) { 19 while(i >= 0 && j < s.length() && s.charAt(i) == s.charAt(j)) { 20 i--; 21 j++; 22 } 23 if(max < (j - i - 1)) { 24 max = j - i - 1; 25 lo = i + 1; 26 } 27 } 28 29 }