题解 | #最长回文子串#
最长回文子串
http://www.nowcoder.com/practice/b4525d1d84934cf280439aeecc36f4af
step 1:遍历字符串每个字符。 step 2:以每次遍历到的字符为中心(分奇数长度和偶数长度两种情况),不断向两边扩展。 step 3:如果两边都是相同的就是回文,不断扩大到最大长度即是以这个字符(或偶数两个)为中心的最长回文子串。 step 4:我们比较完每个字符为中心的最长回文子串,取最大值即可。
import java.util.*;
public class Solution {
public int getLongestPalindrome (String a) {
char[] arr = a.toCharArray();
int n = arr.length;
if(n<1){
return 0;
}
int max = 1;
for(int i=1;i<n;i++){
int j = 1;
while(i>=j && i+j-1< n && arr[i-j]==arr[i+j-1]){
j++;
}
int k = 1;
while(i>=k && i+k< n && arr[i-k]==arr[i+k]){
k++;
}
max = Math.max(max,Math.max(2*(j-1), 2*(k-1) + 1));
}
return max;
}
}