class Solution {
public static String longestPalindrome(String s) {
if(s.length() == 1){
return s;
}
int right = 0;
int left = 0;
int len = 1;
int maxLen = 0;
int maxStart = 0;
for(int i = 0; i< s.length();i++){
left = i - 1;
right = i + 1;
while(left >= 0 && s.charAt(left) == s.charAt(i)) {
len++;
left--;
}
while(right < s.length() && s.charAt(i) == s.charAt(right)) {
len++;
right++;
}
while(left >= 0 && right < s.length() && s.charAt(left) == s.charAt(right)) {
len = len + 2;
left--;
right++;
}
if(len > maxLen) {
maxLen = len;
maxStart = left;
}
len = 1;
}
return s.substring(maxStart + 1, maxStart + maxLen + 1);
}
}
答案解析:如上是一种非常非常非常暴力的解法。
假设有一字符串“ababa”;
第一个while循环判断当前第i位字符左边是否有和它相等的元素
第二个while循环判断当前第i位字符右边是否有和它相等的元素
第三个while循环判断当前第i位字符的左边字符和右边字符是否相等,然后长度+2
最后更新maxLen的长度以及maxStart的位置。