【LeetCode】5 . 最长回文子串

news2024/9/22 13:43:15

5 . 最长回文子串(中等)

在这里插入图片描述

在这里插入图片描述

方法:中心扩散法

思想

  • 「中心扩散法」的基本思想是:遍历每一个下标,以这个下标为中心,利用「回文串」中心对称的特点,往两边扩散,看最多能扩散多远。

  • 枚举「中心位置」时间复杂度为 O(N),从「中心位置」扩散得到「回文子串」的时间复杂度为 O(N),因此时间复杂度可以降到 O(N2) 。

  • 细节:回文串在长度为奇数和偶数的时候,「回文中心」的形态不一样:

    • 奇数回文串的「中心」是一个具体的字符,例如:回文串 “aba” 的中心是字符 “b”;
    • 偶数回文串的「中心」是位于中间的两个字符的「空隙」,例如:回文串 “abba” 的中心是两个 “b”,也可以看成两个 “b” 中间的空隙。

    在这里插入图片描述

代码

class Solution {
public:
    int center = 0;
    int len = 0;
    string longestPalindrome(string s) {
        for(int i=0; i<s.size(); ++i) {
            search(i, i, s);
            search(i, i+1, s);
        }
        // 计算最长子串的起始位置
        int begin = center - (len - 1) / 2;
        return s.substr(begin, len);
    }
    void search(int i, int j, string s) {
        if(i < 0 || j >= s.size())    return ;
        // 保存当前中心
        int pos = i;
        while(i >= 0 && j < s.size() && s[i] == s[j]) {
            i--;
            j++;
        }
        // 标记最长的回文子串长度及其中心
        if(j - i - 1 > len) {
            len = j - i - 1;
            center = pos;
        } 
    }
};

参考资料

  1. 动态规划、中心扩散、Manacher 算法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/959299.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

简单记录牛客top101算法题初级题(C语言实现)BM12 单链表的排序

1. BM12 单链表的排序 要求&#xff1a;给定一个节点数为n的无序单链表&#xff0c;对其按升序排序。          输入&#xff1a;[1,3,2,4,5] 返回值&#xff1a;{1,2,3,4,5}1.1 自己的整体思路 开始的时候使用冒泡排序&#xff0c;但是冒泡排序的时间复杂度是O(n^2)&…

Day52|leetcode 300.最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组

leetcode 300.最长递增子序列 题目链接&#xff1a;300. 最长递增子序列 - 力扣&#xff08;LeetCode&#xff09; 视频链接&#xff1a;动态规划之子序列问题&#xff0c;元素不连续&#xff01;| LeetCode&#xff1a;300.最长递增子序列_哔哩哔哩_bilibili 题目概述 给你一…

政企局域网办公首选:WorkPlus专为政企打造的IM即时通讯平台

政府机构与企业在信息交流与协作中的安全高效需求&#xff0c;使得私有化部署的IM即时通讯平台成为必要选择。WorkPlus提供符合客户应用场景的数字化平台解决方案&#xff0c;满足政企局域网办公需求。WorkPlus如何为政企提供定制化的IM即时通讯解决方案&#xff0c;助力政企机…

【论文绘图】seaborn分类数据绘图

参考&#xff1a;https://seaborn.pydata.org/tutorial/categorical.html 分类变量关系图中的catplot类似于连续变量中的relplot&#xff0c;默认是stripplot。 分类变量图种类 分类散点图 stripplotswarmplot (kind‘swarm’) 类别分布图 boxplotviolinplotboxenplot …

Chrome实现自动化测试:录制回放网页动作

Chrome 浏览器是真的恐怖&#xff0c;它会把相关的小工具都卷死。从它诞生至今&#xff0c;创造了一个又一个的传奇&#xff0c;现在可以看到基于它的操作系统 chrome os &#xff0c;还能买到用它做系统的笔记本电脑。 最近&#xff0c;新版本支持录制和回放功能了。有了这个…

算法通关村14关 | 堆结构

1. 堆的概念与特征 堆是将一组数据按照完全二叉树的存储顺序&#xff0c;将数据存储在一维数组中的结构&#xff0c;对的结构有两种&#xff0c;一种称为大顶堆&#xff0c;一种称为小顶堆。 小顶堆&#xff1a;任意节点的值均小于等于它的左右孩子&#xff0c;并且最小的值位于…

Matlab(GUI程式设计)

目录 1.MatlabGUI 1.1 坐标区普通按钮 1.1.1 对齐组件 1.1.2 按钮属性 1.1.3 脚本说明 1.1.4 选择呈现 1.3 编译GUI程序 在以前的时候&#xff0c;我们的电脑还是这样的 随着科技的不断进步&#xff0c;我们的电脑也发生着翻天覆地的改变1990s&#xff1a; 在未来&#xff0c…

(三)行为模式:7、观察者模式(Observer Pattern)(C++示例)

目录 1、观察者模式&#xff08;Observer Pattern&#xff09;含义 2、观察者模式的UML图学习 3、观察者模式的应用场景 4、观察者模式的优缺点 &#xff08;1&#xff09;优点&#xff1a; &#xff08;2&#xff09;缺点 5、C实现观察者模式的实例 1、观察者模式&…

DP读书:鲲鹏处理器 架构与编程(十一)鲲鹏生态软件架构 AND 硬件特定软件

鲲鹏生态软硬件构成 鲲鹏软件构成硬件特定软件1. Boot Loader2. SBSA 与 SBBR3. UEFI4. ACPI 鲲鹏软件构成 鲲鹏处理器的软件生态是一个不断发展的软件生态&#xff0c;服务器本身也具有复杂度多样性&#xff0c;经过很长时间的发展服务器硬件有不同的操作系统方案&#xff0c…

创造商业新机遇,短视频商城APP崭露头角

随着移动互联网和社交媒体的飞速发展&#xff0c;短视频平台逐渐成为人们获取信息和娱乐的重要渠道。基于此&#xff0c;打造短视频商城APP成为引爆颠覆式购物新潮的利器。短视频商城APP结合了短视频分享和电子商务的优势&#xff0c;为用户提供了一种全新的购物体验。 颠覆传统…

AI 模型:数据收集和清洗

为了训练AI模型,需要收集和准备足够的数据。数据应该涵盖各种情况和场景,以确保系统在各种情况下都能准确地运行。数据原始来源应该是真实的,并且应该涵盖系统预计的使用情况。数据应该根据特定的需求进行采样和处理,可以来自各种来源,例如公共数据集、第三方数据提供商、…

在项目管理中,如何做好进度规划?这两点很重要!

生活中&#xff0c;做事前做好计划&#xff0c;结果总不会太差。如果是走哪算哪&#xff0c;到最后可能什么也做不好。日常生活中尚且如此&#xff0c;在项目管理中涉及人员、任务多&#xff0c;所以&#xff0c;项目经理必须具备规划能力&#xff0c;统筹项目的各种组织和要素…

网络安全(黑客)自学笔记学习路线

谈起黑客&#xff0c;可能各位都会想到&#xff1a;盗号&#xff0c;其实不尽然&#xff1b;黑客是一群喜爱研究技术的群体&#xff0c;在黑客圈中&#xff0c;一般分为三大圈&#xff1a;娱乐圈 技术圈 职业圈。 娱乐圈&#xff1a;主要是初中生和高中生较多&#xff0c;玩网恋…

Spring Boot业务代码中使用声明式事务@Transactional失效踩坑点总结

&#x1f468;‍&#x1f4bb;本文专栏&#xff1a;业务代码踩坑总结 &#x1f468;‍&#x1f4bb;本文简述&#xff1a;Spring Boot业务代码中使用声明式事务Transactional失效踩坑点总结 &#x1f468;‍&#x1f4bb;上一篇文章&#xff1a; &#x1f468;‍&#x1f4bb;有…

Leetcode394 字符串解码

思路&#xff1a;类似于入栈出栈的操作&#xff0c;分层保存数字和字符串&#xff0c;然后逐层相乘合并&#xff0c;通过判断当前字符和上一个字符类型来确定数字是否结束 class Solution:def decodeString(self, s: str) -> str:current_str [""]current_num[]…

第二章 局部图像描述子

文章目录 第二章 局部图像描述子2.1Harris角点检测器2.2SIFT&#xff08;尺度不变特征变换&#xff09;2.2.1兴趣点2.2.2描述子2.2.3检测兴趣点 第二章 局部图像描述子 本章旨在寻找图像间的对应点和对应区域。本章将介绍用于图像匹配的两种局部描述子算法。本书的很多内容中都…

RocketMQ 安装与入门

文章目录 简介下载下载目录地址 安装部署环境要求下载二进制包解压即可启动 NameServer 启动BrokerProxy单组节点单副本模式启动 使用Java客户端发布订阅消息1. 创建主题 topic2. 创建Java工程使用Maven引入Java SDK包生产者代码 ProducerDemo消费者代码 ConsumerDemo RocketMQ…

SPSS教程:如何绘制带误差的折线图

SPSS教程&#xff1a;如何绘制带误差的折线图 1、问题与数据 研究者想研究45-65岁健康男性中&#xff0c;静坐时长和血胆固醇水平的关系&#xff0c;故招募100名研究对象询问其每天静坐时长&#xff08;time&#xff09;&#xff0c;并检测其血液中胆固醇水平&#xff08;cho…

VSCode下载、安装及配置、调试的一些过程理解

第一步先下载了vscode&#xff0c;官方地址为&#xff1a;https://code.visualstudio.com/Download 第二步安装vscode&#xff0c;安装环境是win10&#xff0c;安装基本上就是一步步默认即可。 第三步汉化vscode&#xff0c;这一步就是去扩展插件里面下载一个中文插件即可&am…

安全测试-django防御安全策略

django安全性 django针对安全方面有一些处理&#xff0c;学习如何进行处理设置&#xff0c;也有利于学习安全测试知识。 CSRF 跨站点请求伪造&#xff08;Cross-Site Request Forgery&#xff0c;CSRF&#xff09;是一种网络攻击方式&#xff0c;攻击者欺骗用户在自己访问的网…