思路是利用双指针,从中间向两边扩散,查找两边相同的回文子串,然后挑出最长的来。
class Solution {
public String longestPalindrome(String s) {
String res = "";
for(int i = 0; i < s.length(); i++){
String s1 = palindrome(s, i, i);
String s2 = palindrome(s, i, i+1);
res = res.length() >= s1.length() ? res : s1;
res = res.length() >= s2.length() ? res : s2;
}
return res;
}
public String palindrome(String s, int left, int right){
while(left >= 0 && right <= s.length()
&& s.charAt(left) == s.charAt(right)){
left--;
right++;
}
return s.substring(left++, right);
}
}