Longest Palindromic Substring
给一个字符串, 返回其中最长的回文子字符串. 这个题非常经典, 做法是写一个辅助方法, 可以从字符串中某一个位置向外找到最长的回文 (利用回文的性质), 然而我们不知道回文是奇数位还是偶数位, 所以我们找的时候, 需要同时考虑.
public class Solution {
public String longestPalindrome(String s) {
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 l, int r) {
while(l >= 0 && r < s.length() && s.charAt(l) == s.charAt(r)){
l--;
r++;
}
return r - l - 1;
}
}