给你一个字符串 s
,找到 s
中最长的回文子串。
思路使用中心分散法
注意的点就是 两种可能一个点开始分散 和偶数两个点开始分散
class Solution {
public String longestPalindrome(String s) {
if(s.length()<1||s==null){
return "";
}
int start=0,end=0;
for(int i=0;i<s.length();i++){
int len=xyh(i,i,s);
int len2=xyh(i,i+1,s);
int mv=Math.max(len,len2);
if(mv>end-start){
start=i-(mv-1)/2;
end=i+mv/2;
}
}
return s.substring(start,end+1);
}
public int xyh(int l,int r,String ss){
while(l>=0&&r<ss.length()&&ss.charAt(l)==ss.charAt(r)){
l--;
r++;
}
return r-l-1;
}
}