要求:
给定一个字符串s,找到s中最长的回文子串。
示例:
输入:"babad"
输出:"bab"
"aba"也可以
输入:"cbbd"
输出:"bb"
思路:
以某个元素为中心,分别计算偶数长度的回文最大长度和奇数的回文最大长度。
代码:
class Solution {
private int index, len;
public String longestPalindrome(String s) {
if (s.length() < 2) {
return s;
}
for (int i = 0; i < s.length() - 1; i++) {
PalindromeHelper(s,i,i);
PalindromeHelper(s,i,i+1);
}
return s.substring(index, index+len);
}
public void PalindromeHelper(String s, int l, int r) {
while (l >= 0 && r < s.length() && s.charAt(l) == s.charAt(r)) {
l--;
r++;
}
if (len < r-l-1) {
index = l + 1;
len = r - l - 1;
}
}
}