本文最后更新于 1141 天前,其中的信息可能已经有所发展或是发生改变。
思路
算是入门题了,运用双指针即可。
题目
给你一个字符串 s
,找到 s
中最长的回文子串。
示例 1:
输入:s = "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。
示例 2:
输入:s = "cbbd" 输出:"bb"
示例 3:
输入:s = "a" 输出:"a"
示例 4:
输入:s = "ac" 输出:"a"
提示:
1 <= s.length <= 1000
s
仅由数字和英文字母(大写和/或小写)组成
Related Topics
代码
class Solution {
public String longestPalindrome(String s) {
if (s.length() == 0) {
return null;
}
String max = String.valueOf(s.charAt(0));
for (int i = 0; i < s.length(); i++) {
String str1 = palindrome(s, i - 1, i + 1);
String str2 = palindrome(s, i, i + 1);
String str3 = str1.length() > str2.length() ? str1 : str2;
if (str3.length() > max.length()) {
max = str3;
}
}
return max;
}
private String palindrome(String s, int left, int right) {
while (left >= 0 && right < s.length() && s.charAt(left) == s.charAt(right)) {
left--;
right++;
}
return s.substring(left + 1, right);
}
}