LeetCode每日一练【5】

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)
}
posted @ 2022-04-21 11:29  白い故雪  阅读(18)  评论(0编辑  收藏  举报