当前位置: 首页 > article >正文

LeetCode讲解篇之5. 最长回文子串

文章目录

  • 题目描述
  • 题解思路
  • 题解代码

题目描述

题目链接
在这里插入图片描述

题解思路

从中心点先寻找和中心点相等的左右端点,在基于左右端点进行往外扩散,直至左右端点不相等或者越界,然后左右端点这个范围内就是我们找寻的回文串,我们遍历中心点,就能执行上述流程就能查询所有的回文串,我们只需要取其中的最长的回文子串即可

题解代码

func longestPalindrome(s string) string {
    n := len(s)
    // 结果
    ans := ""
    // 遍历中心节点
    for i := 0; i < n; i++ {
    	// 找寻不等于中心节点的左右端点
        l, r := i, i
        for l > 0 && s[l - 1] == s[i] {
            l--
        }
        for r < n - 1 && s[r + 1] == s[i] {
            r++
        }
		// 左右边界进行扩散,直至左右端点不相等或者越界
        offset := 1
        for l - offset >= 0 && r + offset < n && s[l - offset] == s[r + offset] {
            offset++
        }

		// 刷新最长回文子串
        tmp := s[l - offset + 1:r + offset]
        if len(tmp) > len(ans) {
            ans = tmp
        }

		// 减枝,减少重复回文子串的计算
        i = r
    }

    return ans
}

http://www.kler.cn/news/330978.html

相关文章:

  • 股票接口api,如何用excel获得股票实时数据
  • OpenAI 开发者大会2024
  • vue的el-button防止重复点击
  • 大厂校招:海能达嵌入式面试题及参考答案
  • Webpack 特性探讨:CDN、分包、Tree Shaking 与热更新
  • React响应式修改数组和对象
  • SQLite数据库介绍
  • MySQL那些事(InnoDB架构和存储结构)
  • 论文阅读(十一):CBAM: Convolutional Block Attention Module
  • vmvare虚拟机centos 忘记超级管理员密码怎么办?
  • 【教程】57帧! Mac电脑流畅运行黑神话悟空
  • Vue3封装通用确认删除按钮实战案例
  • Hive数仓操作(四)
  • [ComfyUI]Flux:超美3D微观山水禅意,经典中文元素AI重现,佛陀楼阁山水画卷
  • YOLOv11改进 | 独家创新- 注意力篇 | YOLOv11结合全新多尺度线性注意力机制MLAttention(全网独家创新)
  • IPS和IDS分别适用于哪些网络环境和安全需求
  • Redis集群安装
  • C++ 内存池(Memory Pool)详解
  • Flume实战--Flume中的拦截器详解与操作
  • 卷积神经网络(Convolutional Neural Networks, CNN)