难度:中等
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例 1:
输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。
示例 2:
输入: "cbbd"
输出: "bb"
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-palindromic-substring
Java代码:
class Solution {
private int start=0;
private int maxlength=1;
private void fn(String s,int left,int right){
while(left>=0&&right<s.length()&&s.charAt(left)==s.charAt(right)){
if(right-left+1>maxlength){
maxlength=right-left+1;
start=left;
}
left--;
right++;
}
}
public String longestPalindrome(String s) {
if(s.length()<2){
return s;
}
for(int i=0;i<s.length();i++){
fn(s,i,i+1);
fn(s,i-1,i+1);
}
return s.substring(start,start+maxlength);
}
}
JavaScript代码:
/**
* @param {string} s
* @return {string}
*/
var longestPalindrome = function(s) {
if(s.length<2){
return s;
}
let start=0;
let maxlength=1;
for(let i=0;i<s.length;i++){
expandAroundCenter(i-1,i+1);
expandAroundCenter(i,i+1);
}
return s.substring(start,start+maxlength);
function expandAroundCenter(left,right){
while(left>=0&&right<s.length&&s[left]===s[right]){
if((right-left+1)>maxlength){
maxlength=right-left+1;
start=left;
}
left--;
right++;
}
}
};
解题思路: