5. 最长回文子串
给你一个字符串 s,找到 s 中最长的回文子串。
示例 1:
输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。
示例 2:
输入:s = "cbbd"
输出:"bb"
解析
时间复杂度降不下来,O(N2) 。我们从每一个字符开始,向左右两边进行扩展,需要注意的是区分奇数和偶数,这两种情况都要算进去。
class Solution {
int index = -1,len = 0;
public String longestPalindrome(String s) {
if(s==null||s.length()<2) return s;
for(int i = 0 ; i < s.length();i++){
helper(s,i,i);
helper(s,i,i+1);
}
return s.substring(index,index+len);
}
public void helper(String s,int left,int right){
while(left>=0&&right<s.length()&&s.charAt(left)==s.charAt(right)){
left--;
right++;
}
if(len<(right-1-(left+1)+1)){
index = left+1;
len = right-left-1;
}
}
}
注意:本文归作者所有,未经作者允许,不得转载