最长回文子串
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为1000。
示例 1:
输入: "babad"
输出: "bab"
注意: "aba"也是一个有效答案。
示例 2:
输入: "cbbd"
输出: "bb"
目前能想到的就是暴力解法,双层for循环,依次以每一个字符作为子串的起始处,判断每一个可能的子串是否为回文子串
class Solution {
public String longestPalindrome(String s) {
if(s.length()<=1){
return s;
}
int len=s.length();
int maxLength=0;
int startIndex=0;
int endIndex=0;
for (int i = 0; i < len; i++) {
for (int j = i+1; j <len ; j++) {
//当首尾字符相同时,进入回文子串判断程序
if(s.charAt(i)==s.charAt(j)){
int temp=j-i+1;
if(temp>maxLength) {
boolean flag = true;
for (int k = 0; k <= (j-i) / 2; k++) {
if (s.charAt(k + i) != s.charAt(j - k)) {
flag = false;
}
}
if(flag){
startIndex=i;
endIndex=j;
maxLength=temp;
}
}
}
}
}
s=s.substring(startIndex,endIndex+1);
return s;
}
}