class Solution {
public String longestPalindrome(String s) {
int len = s.length();
//这个二维boolean数组用来存储从i到j的状态
boolean a[][] = new boolean[len][len];
//用于存放结果的字符串
String result = "";
//这里k是字符串长度
for(int k = 0; k < len; k ++){
//这里i表示起始游标,j表示终止游标
for(int i = 0; i < len - k; i ++){
int j = i + k;
//这里特别分出0和1的情况主要是为了防止穿模,越界
if(k == 0){
a[i][j] = true;
}
else if(k == 1){
a[i][j] = s.charAt(i) == s.charAt(j);
}else{
a[i][j] = (s.charAt(i) == s.charAt(j)) && a[i + 1][j - 1];
}
//当满足条件时,输出
if(a[i][j]){
result = s.substring(i, j+1);
}
}
}
return result;
}
}
最长回文子串问题
最新推荐文章于 2021-12-07 19:33:50 发布