题解 | #最长回文子串#
最长回文子串
http://www.nowcoder.com/practice/b4525d1d84934cf280439aeecc36f4af
import java.util.*;
public class Solution {
public int getLongestPalindrome(String A, int n) {
if (n <= 0) {
return 0;
}
if (n == 1) {
return 1;
}
int max = 0;
for (int i = 1; i< n ; i++) {
//aa的情况 即重复元素回文的情况 类似aa或者 aabbaa baab
//记录左边界
int low = i - 1;
//记录右边界
int high = i;
while (low >=0 && high < n && A.charAt(low) == A.charAt(high)) {
//取每次回文字符串的最大长度
max = Math.max(max, high - low + 1);
//以每一个元素i的位置为中心 向两边进行滑动 再次判断是否为回文字符串
low--;
high++;
}
//aba这种回文的情况 这种应该类似1234 5 654321
int low2 = i - 1;
int high2 = i + 1;
while (low2 >= 0 && high2 < n && A.charAt(low2) == A.charAt(high2)) {
//取每次回文字符串的最大长度
max = Math.max(max, high2 - low2 + 1);
//以每一个元素i的位置为中心 向两边进行滑动 再次判断是否为回文字符串
low2--;
high2++;
}
}
return max;
}
}
查看5道真题和解析