2018-01-30 获取最大的回文字符串
2018-01-30 本文已影响15人
BlackChen
public String longestPalindrome(String s) {
int length = s.length();
int maxlength = 0;
int start = 0;
for (int i = 0; i < length; i++)//长度为奇数
{
int j = i - 1, k = i + 1;
while (j >= 0 && k < length && s.charAt(j) == s.charAt(k)) {
if (k - j + 1 > maxlength) {
maxlength = k - j + 1;
start = j;
}
j--;
k++;
}
}
for (int i = 0; i < length; i++)//长度为偶数
{
int j = i, k = i + 1;
while (j >= 0 && k < length && s.charAt(j) == s.charAt(k)) {
if (k - j + 1 > maxlength) {
maxlength = k - j + 1;
start = j;
}
j--;
k++;
}
}
if (maxlength > 0)
return s.substring(start, start + maxlength);
return s.substring(0,1);
解法:
暴力枚举,回文字符串分为奇数和偶数.
奇数:
"aba" ,把每个字符串中间作为基准点,比较两边字符,直到不相等或者达到临界值(下标小于0 或者大于length).
"abba",把每个字符串中间两个字母,作为基准点,比较两边的字符,直到不相等或者达到临界值(下标小于0 或者大于length).