中心扩散, 分成奇偶回文序列两种情况分别遍历
java
class Solution {
/**
* 中心扩散, 分成奇偶回文序列两种情况分别遍历
*/
public String longestPalindrome(String s) {
char[] arr = s.toCharArray();
int len = arr.length;
// 左闭右开
int ansLeft = 0, ansRight = 0;
for (int i = 0; i < len; i++) {
int l = i, r = i;
while (l >= 0 && r < len && arr[l] == arr[r]) {
l--;
r++;
}
if (r - l - 1 > ansRight - ansLeft) {
ansLeft = l + 1;
ansRight = r;
}
}
for (int i = 0; i < len - 1; i++) {
int l = i, r = i+1;
while (l >= 0 && r < len && arr[l] == arr[r]) {
l--;
r++;
}
if (r - l - 1 > ansRight - ansLeft) {
ansLeft = l + 1;
ansRight = r;
}
}
return s.substring(ansLeft, ansRight);
}
}