LeetCode每日一练
Longest Palindromic Substring
/*
* @Author: fox
* @Date: 2022-04-21 06:08:13
* @LastEditors: fox
* @LastEditTime: 2022-04-21 11:25:39
* @Description: https://leetcode.com/problems/longest-palindromic-substring/
*/
function longestPalindrome(s) {
// 1. 如果字符串为空或者字符串的长度为1,直接返回字符串
if (!s || s.length <= 1) { return s }
// 2. 存储回文字符串
let longestPalindrome = s.substring(0, 1)
for (let i = 0; i < s.length; i++) {
// 3. 获取最大回文字符串
// 3.1 (s, i, i) 获取奇数回文字符串
// 3.2 (s, i, i+1) 获取偶数回文字符串
[expand(s, i, i), expand(s, i, i + 1)].forEach((item) => {
if (item.length > longestPalindrome.length) {
longestPalindrome = item
}
})
}
return longestPalindrome
}
/**
* @description: 回文校验和提取回文字符串
* @param {*} s
* @param {*} begin
* @param {*} end
* @return {*}
*/
function expand(s, begin, end) {
// 1. 回文校验
while (begin >= 0 && end <= s.length - 1 && s[begin] === s[end]) {
begin--
end++
}
return s.substring(begin + 1, end)
}