基于java求最大回文子串
/**
* @desc 求最长回文字符串
* 采用中心扩展的方法来实现
* https://blog.youkuaiyun.com/a1111116/article/details/115176747
**/
public class MaxPalindrome {
public String longestPalindrome(String s) {
if (s.length() < 2) return s;
char[] chars = s.toCharArray();
int begin = 0;
int maxLength = 0;
for (int left=0; left < s.length() - 1; left ++) {
int oddLen = expandAroundCenter(chars, left, left);
int evenLen = expandAroundCenter(chars, left, left + 1);
int curMaxLen = Math.max(oddLen, evenLen);
if (curMaxLen > maxLength) {
maxLength = curMaxLen;
begin = left - (curMaxLen - 1) /2;
}
}
return s.substring(begin, begin + maxLength);
}
private int expandAroundCenter(char[] chars, int left, int right) {
while (left >= 0 && right < chars.length && chars[left] == chars[right]) {
left --;
right ++;
}
return right - left - 1;
}
}