给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例 1:
输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 示例 2:
输入: "cbbd" 输出: "bb"
根据回文子串的定义,枚举所有长度大于等于 22 的子串,依次判断它们是否是回文; 在具体实现时,可以只针对大于“当前得到的最长回文子串长度”的子串进行“回文验证”; 在记录最长回文子串的时候,可以只记录“当前子串的起始位置”和“子串长度”,不必做截取。这一步我们放在后面的方法中实现。 说明:暴力解法时间复杂度高,但是思路清晰、编写简单。由于编写正确性的可能性很大,可以使用暴力匹配算法检验我们编写的其它算法是否正确。优化的解法在很多时候,是基于“暴力解法”,以空间换时间得到的,因此思考清楚暴力解法,分析其缺点,很多时候能为我们打开思路。
package longest_palindrome;
public class Solution {
public boolean isPalindrome(char[] charArray, int left, int right){
while(left<right){
if(charArray[left]!=charArray[right]){
return false;
}
left++;
right--;
}
return true;
}
public String longestPalindrome(String s) {
int len=s.length();
if(len<2){
return s;
}