- 最长回文子串(leetcode 中等题)
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例 1:
输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。
示例 2:
输入: "cbbd"
输出: "bb"
class Solution {
public String longestPalindrome(String s) {
String ans = "";
for(int i=0;i<s.length();i++){
String ans1 = palindrome(s,i);
ans = ans1.length()>ans.length()?ans1:ans;
}
for(int i=0;i<s.length();i++){
String ans2 = palindrome1(s,i);
ans = ans2.length()>ans.length()?ans2:ans;
}
return ans;
}
public static String palindrome(String s, int index) {
String ans = s.substring(index, index + 1);
int i = 1;
while (index - i >= 0 && index + i < s.length()) {
if (s.charAt(index - i) == s.charAt(index + i)) {
ans = s.substring(index - i, index + i + 1);
i++;
}else{
break;
}
}
return ans;
}
public static String palindrome1(String s, int index) {
String ans = s.substring(index, index + 1);
int i = 1;
while (index - i + 1 >= 0 && index + i < s.length()) {
if (s.charAt(index - i + 1) == s.charAt(index + i)) {
ans = s.substring(index - i + 1, index + i + 1);
i++;
} else {
return ans;
}
}
return ans;
}
}