知识点:双指针
对于最长回文子串的判断,我们可以从任意位置开始,双指针向两侧移动,直至左右指针指向不同的字符为止,当当前的回文子串长度大于已记录的回文子串长度时,更新全局指针。对于回文串来说,可能出现长度为奇数和偶数的情况,故双指针的起始位置要分情况讨论,当左右指针初始位置相同时代表奇数长度的回文子串,左右指针初始位置相邻代表偶数长度的回文子串。
Java题解如下
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @return string字符串
*/
private int start = 0;
private int end = 0;
public String longestPalindrome (String s) {
// write code here
for(int i = 0; i < s.length() - 1; i++) {
getStr(s, i, i);
getStr(s, i, i + 1);
}
return s.substring(start, end + 1);
}
private void getStr(String s, int left, int right) {
while(left >= 0 && right < s.length() && s.charAt(left) == s.charAt(right)) {
left--;
right++;
}
left++;
right--;
if(right - left > end - start) {
start = left;
end = right;
}
}
}



京公网安备 11010502036488号