5. 最长回文子串

var longestPalindrome = function(s) {
//如果字符串小于等于1则回文串就是它本身
if(s.length<=1)
{
return s;
}
//这里最大长度初值为1,是因为字符串最小回文子串的长度就是1
let maxlength=1;
let i=0;
let start=0;
//设置一个方法输入左和右的index值,意在实现回文字符串的两种情况
function expandAround(left,right){
//while 遍历左右是否越界以及左右值是否相等
while(left>=0&&right<s.length&&s[left]==s[right])
{
//左边标签往左,右边标签往右
left--;
right++;
}
//判断该字串的长度是否大于最大长度、注意这里right-1和ledt+1
if(((right-1)-(left+1)+1)>maxlength)
{
maxlength=Math.max(maxlength,((right-1)-(left+1)+1));
start=left+1;
}
}
//循环遍历字符串
for(i=0;i<s.length;i++)
{
//这里就是解决CABAC这种情况 把每个index都看成一个中心
expandAround(i-1,i+1);
//这里解决ABBA这种情况 把BB看成一个整体
expandAround(i,i+1)
}
//返回s字串
return s.substring(start,start+maxlength);
};
s.substring(statr,end);
可以截取字符串的子串
本文介绍了一种使用动态规划解决最长回文子串问题的 JavaScript 实现。通过实例讲解了如何处理边界情况、中心扩散法和双指针技巧,以及如何找到字符串中具有最长回文性质的子串。
593

被折叠的 条评论
为什么被折叠?



