LeetCode——最长回文子串(中心拓展法)

简介: LeetCode——最长回文子串(中心拓展法)

题目描述

image.png

解题思路

  1. 将字符串的长度分为奇数和偶数的情况。
  2. 奇数的情况,传入的是两个相同的下标,偶数的情况传入的是i和i+1。
  3. 如果m大于等于0,n小于len,并且这两个字符是相等的,则一个左移,一个右移。
  4. 移动完毕之后,判断是否更新最终的结果,只要比最终结果长,就更新最终结果。

AC代码

var longestPalindrome = function(s) {
    // 获取字符串的长度
    let len = s.length;
    // 定义最终返回的结果
    let result = '';
    // 循环遍历每一个字符并更新最终的结果
    for (let i = 0; i < len; i++) {
        // 奇数的情况
        getResult(i,i);
        // 偶数的情况
        getResult(i,i+1);
    }
    function getResult(m,n) {
        while(m >= 0 && n < len && s[m] === s[n]) {
            m--;
            n++;
        }
        // 判断是否更新最终的结果,只要比最终结果长,就更新为最终结果
        if (n - m -1 > result.length) {
            result = s.slice(m+1,n);
        }
    }
    return result;
};
复制代码

题目反思

  • 学会中心拓展法这个思路。
  • 熟练记忆slice这个API的用法。
相关文章
|
2月前
Leetcode第五题(最长回文子串)
这篇文章介绍了解决LeetCode第五题“最长回文子串”问题的一种方法,使用了中心扩展法来寻找给定字符串中的最长回文子串。
39 0
|
7月前
|
算法
LeetCode算法题---最长回文子串、N 字形变换(四)
LeetCode算法题---最长回文子串、N 字形变换(四)
43 0
|
4月前
|
Python
【Leetcode刷题Python】5. 最长回文子串
LeetCode 5题 "最长回文子串" 的Python解决方案,使用动态规划算法找出给定字符串中的最长回文子串。
48 3
|
4月前
|
算法
LeetCode第5题最长回文子串
该文章介绍了 LeetCode 第 5 题最长回文子串的解法,通过分析回文子串的特点,使用动态规划的思想,用二维数组记录字符串是否为回文串,从后往前遍历找子串,减少重复判断,最终找到最长回文子串,并总结了解题时通过举例推导找规律的思路。
LeetCode第5题最长回文子串
|
6月前
|
存储 算法 Java
【经典算法】LeetCode 5: 最长回文子串(Java/C/Python3实现含注释说明,Medium)
【经典算法】LeetCode 5: 最长回文子串(Java/C/Python3实现含注释说明,Medium)
79 2
|
7月前
leetcode代码记录(最长回文子串
leetcode代码记录(最长回文子串
49 2
|
7月前
|
索引
力扣---最长回文子串(动态规划)
力扣---最长回文子串(动态规划)
|
6月前
dp表,哈希表,力扣5.最长回文子串力扣1745.分割回文串IV力扣132.分割回文串II优先级队列(堆)是什么下面是手动实现小根堆力扣1046.最后一块石头的重量
dp表,哈希表,力扣5.最长回文子串力扣1745.分割回文串IV力扣132.分割回文串II优先级队列(堆)是什么下面是手动实现小根堆力扣1046.最后一块石头的重量
|
7月前
|
存储 算法 Go
LeetCode第五题: 最长回文子串
给定一个字符串 `s`​,找到 `s`​ 中最长的回文子串。你可以假设 `s`​ 的最大长度为 1000。
LeetCode第五题: 最长回文子串
|
7月前
|
算法 Go
golang力扣leetcode 5.最长回文子串
golang力扣leetcode 5.最长回文子串
57 1