Leetcode—5.最长回文子串【中等】

2023每日刷题(三十五)

Leetcode—5.最长回文子串

在这里插入图片描述

中心扩展法算法思想

可以使用一种叫作“中心扩展法”的算法。由回文的性质可以知道,回文一定有一个中心点,从中心点向左和向右所形成的字符序列是一样的,并且如果字符串的长度为偶数的话,中心点在中间的两个字符的中间位置(不对应具体字符);如果是奇数的话,则中心点会在中间的字符上。

实现代码

class Solution {
public:
    int findPalindrome(string s, int left, int right, int* start) {
        int len = s.size();
        while(left >= 0 && right <= len && s[left] == s[right]) {
            left--;
            right++;
        }
        left++;
        right--;
        *start = left;
        return right - left + 1;
    }

    string longestPalindrome(string s) {
        int n = s.size();
        int i = 0;
        int len1 = 0, len2 = 0;
        int start1 = 0, start2 = 0;
        int sta = 0;
        int maxlen = 0;
        while(i < n) {
            len1 = findPalindrome(s, i, i, &start1);
            len2 = findPalindrome(s, i, i + 1, &start2);
            if(len1 > maxlen || len2 > maxlen) {
                if(len1 > len2) {
                    sta = start1;
                    maxlen = len1;
                } else {
                    sta = start2;
                    maxlen = len2;
                }
            }
            i++;
        }
        return s.substr(sta, maxlen);
    }
};

运行结果

在这里插入图片描述

复杂度分析

● 时间复杂度:枚举所有中心点的时间复杂度为O(n),findPalindrome函数的时间复杂度仍然是O(n),因此总的时间复杂度为 O ( n 2 ) O(n^2) O(n2),其中n为字符串的长度
● 空间复杂度:O(1)

之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vatee万腾科技创新之舟:Vatee数字化力量引领未来的独特路径

在数字化的大潮中&#xff0c;Vatee万腾如一艘科技创新之舟&#xff0c;在未来的海洋中翱翔。vatee万腾以强大的数字化力量为桨&#xff0c;引领着行业向着新的、独特的路径前行&#xff0c;塑造着数字时代的未来。 Vatee万腾不仅仅是一家科技公司&#xff0c;更是一艘创新之舟…

SBPL 打印机上传图片

A计算图片大小 选择图片》打开方式》画图 选择“主页”》重新调整大小 选择“像素” 图片大小计算公式 原图像素/打印机像素&#xff08;每毫米几个点&#xff09;*要求图片的大小&#xff08;mm&#xff09; 例&#xff1a;使用SR224R打印这个logo&#xff0c;大小要求为5m…

【前段基础入门之】=>CSS3新特性 BFC

什么是BFC( 概念) W3C 上对 BFC 的定义&#xff1a; MDN 上对 BFC 的定义&#xff1a; 简而言之 开启了BFC能解决什么问题 元素开启 BFC 后&#xff0c;其子元素不会再产生 margin 塌陷问题元素开启 BFC 后&#xff0c;自己不会被其他浮动元素所覆盖元素开启 BFC 后&#xff0…

时间序列预测(8) — Informer模型原理

目录 0 摘要 1 引言 2 定义 3 方法 3.1 高效的自注意力机制 3.2 稀疏度度量 3.3 ProbSparse稀疏自注意力机制 3.4 Encoder编码器 3.5 Decoder解码 参考视频&#xff1a;Informer原理及代码解析_哔哩哔哩_bilibili 0 摘要 长序列时间序列预测&#xff08;LSTF&#x…

机器人制作开源方案 | 钻孔植树一体化沙漠车

作者&#xff1a;徐邦国、张博宇、刘露、李晶晶、吕洁秀单位&#xff1a;天津职业技术师范大学 机械工程学院指导老师&#xff1a;何永利 摘要&#xff1a;本项目旨在设计一种专用于沙漠植树的植树车&#xff0c;以沙漠自动化植树为研究对象&#xff0c;提出一种创新式钻…

【软件工程师从0到1】- Java面向对象基础 (知识汇总)

前言 介绍&#xff1a;大家好啊&#xff0c;我是hitzaki辰。 社区&#xff1a;&#xff08;完全免费、欢迎加入&#xff09;日常打卡、学习交流、资源共享的知识星球。 自媒体&#xff1a;我会在b站/抖音更新视频讲解 或 一些纯技术外的分享&#xff0c;账号同名&#xff1a;hi…

无痛卸载流氓杀毒软件Avast

文章目录 1\. 引言2\. 操作 1. 引言 与其说Avast是一个杀毒软件&#xff0c;不如说它是一个流氓软件&#xff0c;对于常用的微信QQ也进行拦截&#xff0c;我真的不知道意义何在 此外如果不小心安装上它之后&#xff0c;会出现一个问题&#xff1a;鼠标正常&#xff0c;电脑打字…

buildadmin+tp8表格操作(7)表格的事件监听

buildadmin 中的事件都已经在 baTable类中定义好了。我们一般不会去修改&#xff0c;万一我们要在事件上有所操作&#xff0c; 我们可以通过事件的 前置和后置 钩子函数来处理 那么我们是如何使用这些钩子呢&#xff1f; 我们只需要在 创建对象的时候&#xff0c;定义好这些钩…

企业怎样申请SSL证书?

对于很多企业而言&#xff0c;使用SSL证书加密网站已经显得尤为重要&#xff0c;这不仅仅是关乎企业的网站安全&#xff0c;同时也关系着企业的形象以及用户的信赖。既然使用https协议已经众多企业认可&#xff0c;那么我们该如何给自己的网站申请以及安装SSL证书&#xff1f; …

Nginx 413 Request Entity Too Large

当出现上图时候 更改nginx config 文件 在http{}或者server{}或者location{}中增加client_max_body_size 100m; 然后重启nginx 服务就好了

二进制部署k8s集群-过程中的问题总结(接上篇的部署)

1、kube-apiserver部署过程中的问题 kube-apiserver.conf配置文件更改 2、calico的下载地址 curl https://docs.projectcalico.org/v3.20/manifests/calico.yaml -O 这里如果kubernetes的节点服务器为多网卡配置会产生报错 修改calino.yaml配置文件 解决方法&#xff1a; 调…

Redis 学习

Redis 集群共3种集群模式&#xff1a; 1. 主从模式 &#xff08;主写从读&#xff09;&#xff0c;写请求分配到主库&#xff0c;完后数据同步到从库&#xff0c;从库主要负责读请求 同步过程&#xff1a; 从库启动向主库发送同步请求&#xff0c;数据传输的形式是RDB文件&am…

CentOS安装nodejs

查看可安装的版本 dnf module list nodejs选择需要版本安装 dnf module install nodejs:<stream>查看版本

5分钟带你了解什么是敏捷测试?难点显而易见!

随着敏捷开发模式的普及&#xff0c;越来越多的测试同仁也开始了敏捷测试。那么究竟什么是敏捷测试&#xff1f;敏捷测试与传统测试的主要区别是什么&#xff1f;敏捷测试的难点又是什么&#xff1f;本文会对这三个问题进行讲解。注意&#xff1a;本文只是讲解敏捷测试概念相关…

同创永益联合红帽打造一站式数字韧性解决方案

随着AI技术的快速兴起&#xff0c;IT技术已成为推动业务持续增长的重要驱动力&#xff0c;这要求企业不断尝试新事物&#xff0c;改变固有流程&#xff0c;加强IT技术与业务的合作&#xff0c;同时提升数字韧性能力&#xff0c;以实现业务目标。10月26日&#xff0c;红帽2023中…

PC3329L DC-DC降压 10V-100V输入3A大流输出带EN功能实现零功耗只需极少元器件

1. PC3392L特性  通过使能脚关断实现零功耗  宽电压输入范围 10V 至 100V  最大输出电流 3A  集成功率 MOS 管  外围器件少  输出短路保护  温度保护  逐周期限流  输出电压灵活可靠  ESOP8 2. 描述 PC3392L 一款宽电压范围降压型 DC-DC 电源管…

Python 进程和线程详解(multiprocessing、threading)

文章目录 1 概述1.1 进程 VS 线程1.2 优缺点 2 进程2.1 三个步骤2.2 多进程2.3 带参数2.3.1 元组参数 args2.3.2 字典参数 kwargs 2.4 获取进程编号2.5 设置进程守护 3 线程3.1 三个步骤3.2 多线程3.3 带参数2.3.1 元组参数 args2.3.2 字典参数 kwargs 2.4 获取线程编号2.5 设置…

3D建模基础教程:编辑多边形功能命令快捷方式

一、打开3D软件并创建新模型 首先&#xff0c;打开你的3D建模软件&#xff0c;比如Blender、Maya或3ds Max。然后&#xff0c;创建一个新的3D模型。你可以使用基本几何体来创建模型&#xff0c;也可以导入现有的模型。 二、进入编辑多边形模式 在主工具栏中&#xff0c;找到并…

设置指定时间之前的时间不可选

1、el-date-picker设置今天之前的日期不可选 <el-date-picker style"width: 100%" type"date" v-model"form.resetDate" align"right" :value-format"yyyy-MM-dd" placeholder"选择调整日期":disabled"t…

【带头学C++】----- 七、链表 ---- 7.5 学生管理系统(链表--上)

目录 1.main函数设计 2.定义Node节点类型 3.链表插入结点 在main函数中调用插入函数、打印函数 插入结点函数实现&#xff08;头插法&#xff09; 插入结点函数实现&#xff08;尾插法&#xff09; 遍历链表函数实现 4.演示插入、遍历结果 目录 1.main函数设计 2.定义…