给你一个字符串 s,找到 s 中最长的回文子串。
标签:字符串
/**思路:
* 以i为中心循环,从头开始扩散 ,写一个扩散子串的方法,再使用这个方法从头遍历,注意有基数和偶数两种情况
* 获得其中最大的串,并将其余end - start 比较,每次更新end 和 start的值
*/
class Solution {
public String longestPalindrome(String s) {
int max1,max2,max;
int start = 0, end = 0;
for (int i = 0; i < s.length(); i++) {
max1 = getLongStr(s,i,i);
max2 = getLongStr(s,i,i + 1);
max = Math.max(max1,max2);
if(max > end - start){
start = i - (max - 1)/2;
end = i + max/2;
}
}
return s.substring(start,end + 1);
}
public Integer getLongStr(String s,int left,int right){
while (left >= 0 && right < s.length() && s.charAt(left) == s.charAt(right)){
left --;
right ++;
}
return right - left - 1;
}
}