思路
遍历字符串,每遇到一个字符,
以该字符为中心,向两边开始遍历,看看该字符的左右两边是否相等
如果相等,就继续扩展
如果不相等,就判断当前左右两边包括的字符串是否是最大的
如果不明白,一张图保证你明白:
如果图没看太懂,下面上代码:
class Solution {
private int start = 0;
private int maxLen = 0;
public String longestPalindrome(String s) {
for(int i = 0 ; i < s.length() ; i++){
//以该字符为中心,可是只能是奇数的
judge(s,i,i);
//以该字符和该字符的下一个字符为中心,是偶数的
judge(s,i,i+1);
}
return s.substring(start,start+maxLen);
}
public void judge(String s , int left , int right ){
while(left >=0 && right < s.length() && s.charAt(left) == s.charAt(right)){
left--;
right++;
}
if(( right - left -1 ) > maxLen ){
maxLen = right - left - 1;
start = left + 1;
}
}
}