Appearance
5.最长回文子串
题目描述
给你一个字符串 s,找到 s 中最长的回文子串。
示例 1:
输入:s = "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。
示例 2:
输入:s = "cbbd" 输出:"bb"
思路分析
- 遍历数组,以arr[i]或者arr[i]和arr[i + 1]为中心,往两边扩散,获取回文串,再不断比较结果,取长度最长者。
AC 代码
class Solution {
public String longestPalindrome(String s) {
String ans = "";
for(int i = 0; i < s.length(); i++){
String str1 = substr(s, i, i);
String str2 = substr(s, i, i+1);
ans = str1.length() > ans.length() ? str1 : ans;
ans = str2.length() > ans.length() ? str2 : ans;
}
return ans;
}
public String substr(String s, int i, int j){
while(i >= 0 && j < s.length() && s.charAt(i) == s.charAt(j)){
i--;
j++;
}
// 结束循环时,i和j都已经多挪了一位,一位substring是左闭右开,所以i需要+1归位
return s.substring(i + 1, j);
}
}```