给你一个字符串 s
,找到 s
中最长的回文子串。
示例 1:
输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。
示例 2:
输入:s = "cbbd"
输出:"bb"
示例 3:
输入:s = "a"
输出:"a"
示例 4:
输入:s = "ac"
输出:"a"
提示:
1 <= s.length <= 1000
s
仅由数字和英文字母(大写和/或小写)组成
/**
* <p>Title: </p>
* <p>Description: </p>
*
* @author zcm
* @date 2021/10/11 下午8:17
*/
public class Solution {
public String longestPalindrome(String s) {
String res = "";
//遍历全部的中心点 i ,从中心点 i 开始,往两边走
for(int i = 0; i < s.length(); i++){
//对于每个中心点,它所对应的最长回文子串的长度,可能是奇数,可能是偶数
//奇数类型判断
int l = i - 1, r = i + 1;
while(l >= 0 && r < s.length() && s.charAt(l) == s.charAt(r)){
l--;
r++;
}
if (res.length() < r - l -1){
res = s.substring(l + 1, r );
}
//偶数类型判断
l = i;
r = i + 1;
while (l >= 0 && r < s.length() && s.charAt(l) == s.charAt(r)){
l--;
r++;
}
if (res.length() < r - l - 1){
//substring(从索引a开始截取, 截取到索引b的前一位)
res = s.substring(l + 1, r );
}
}
System.out.println(res);
return res;
}
}