专业编程基础技术教程

网站首页 > 基础教程 正文

leetcode 5 : 最长回文子串(js)

ccvgpt 2024-08-16 14:53:24 基础教程 7 ℃

给你一个字符串 s,找到 s 中最长的回文子串。

什么是回文?直白点说就是一句话正着读和反着读都一样,

leetcode 5 : 最长回文子串(js)

eg: 斗鸡山上山鸡斗;龙隐洞中洞隐龙

回到本题:寻找字符串s中的最长的回文子串

/**

* @param {string} s

* @return {string}

*/

var longestPalindrome = function(s) {

let start = 0; //回文子串开始位置

let end = 0; //回文子串结束位置

let len = end - start //找到的回文子串的长度,用来比较,找到最长的那一个

for(let i = 0; i < s.length;i++)

{

if(len > s.length - i) //找到的回文子串长度已经大于剩下待循环的字符长度,就没有必要找下去了

{

break;

}

let a = s.charAt(i) //当前字符

let index = s.lastIndexOf(a) //找到与当前字符相同的字符最靠后的位置

for(let j = index;j > i;j--) //从两个相同的字符最长的开始找回文字符,递减

{

let b = s.charAt(j)

if(a == b) //两头的相等才有可能是回文字符,不相等直接略过,节省运算开销

{

let word = s.substring(i,j +1) //正着读

let word2 = word.split('').reverse().join('') //反着读

if(word == word2 && j - i > len) //判断是否回文子串并且大于已找到的回文子串长度

{

start = i

end = j

len = end - start

break;

}

}

}

}

return s.substring(start,end + 1) //截取最长回文子串

};

Tags:

最近发表
标签列表