leetcode-5. 最长回文子串

题目描述

给你一个字符串 s,找到 s 中最长的回文子串。

如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。

示例 1:

输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。

示例 2:

输入:s = "cbbd"
输出:"bb"

思路 【参考官方题解:动态规划】

class Solution(object):def longestPalindrome(self, s):""":type s: str:rtype: str"""n = len(s)if n < 2:return smax_len = 1 # 记录最长的回文字串的长度begin = 0  # 记录开始位置,到时候一加就可以找出字符串# ababadp = [[False] * n for _ in range(n)]  # 用于记录是否是回文字串for i in range(n):dp[i][i] = True  # 自己到自己肯定是for L in range(2, n + 1):  # 这个是间隔,从2开始,for i in range(n):j = i + L - 1  # -1是从相邻的两个位置比较,【0,1】【1,2】【2,3】if j >= n:    # 超出字串串本身的长度,步子太大了,就跳出去breakif s[i] != s[j]:    # 如果不相等,返回falsedp[i][j] = Falseelse:                # 如果相等,有两种情况if j - i < 3:    # 如果间隔中就一个或者批次挨着dp[i][j] = True  # 直接返回true就行else:                # 如果间隔中有2个及以上的字符dp[i][j] = dp[i + 1][j - 1]   # 就需要看dp[i+1][j-1]if dp[i][j] and j - i + 1 > max_len:  # 如果是回文字串,并且长度大于最大长度max_len = j - i + 1              # 则进行更新begin = ireturn s[begin:begin + max_len]  if __name__ == '__main__':s = Solution()print(s.longestPalindrome('ababa'))

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

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

相关文章

计算机发展史故事【4】

继往与开来 巴贝奇巨星陨落后&#xff0c;世人已逐渐将他淡忘&#xff0c;20 世纪已经来临。计算机的历史等待着&#xff0c;等待着巴贝奇式的人物再世&#xff0c;等待着人类划时代的壮举。 大约在1936 年&#xff0c;美国青年霍德华艾肯&#xff08;H.Aiken&#xff09;来哈佛…

javacv实时解析pcm音频流

javacv实时解析pcm音频流 解析代码 try (ByteArrayInputStream inputStream new ByteArrayInputStream(bytes);){FFmpegFrameGrabber grabber new FFmpegFrameGrabber(inputStream);// PCM S16LE 格式grabber.setFormat("s16le");// 采样率grabber.setSampleRate(1…

【PHP】查询Mysql根据GREATEST函数对两个字段的较大值对结果进行排序

目录 一、GREATEST函数简介 二、示例 三、应用场景 四、注意事项 在数据库查询中&#xff0c;我们经常需要根据某个字段的值对结果进行排序。然而&#xff0c;有时我们需要根据两个或多个字段的值进行排序&#xff0c;这时我们可以使用MySQL的GREATEST()函数。GREATEST()函…

phpize +Visual Studio + MSYS2 + bison 草稿记录并未正常完成

phpize Visual Studio MSYS2 bison 先安装 Visual Studio https://visualstudio.microsoft.com/zh-hans/vs/ 在安装过程中&#xff0c;选择安装工作负载。确保选择了 C 工作负载以及适用于 C 开发的相关组件&#xff0c;例如 MSVC v142 - VS 2022 C x64/x86 build tools。 …

QT设计模式:工厂模式

基本概念 工厂模式是一种创建型设计模式&#xff0c;用于将对象的创建逻辑与使用者分离&#xff0c;以实现对象的创建和使用的解耦。工厂模式提供了一个统一的接口来创建对象&#xff0c;而客户端代码只需通过该接口来请求所需的对象&#xff0c;而不需要知道具体的对象创建细…

多个glibc库存在时如何查看ldd调用的哪个

但是发现存在多个版本的glibc版本&#xff0c;需要查看具体的库的信息&#xff0c;和相应的关键函数的信息&#xff0c;但是并不知道具体的libc.so.6的路径信息 rootalg-dev04:~/xingqiao# ldd --version ldd (GNU libc) 2.29 rootalg-dev04:/opt# which ldd /usr/local/bin/…

Exness外汇大陆投资者开户详细流程!

Exness是一家全球领先的外汇和差价合约交易平台&#xff0c;因其高效稳定的服务和多样化的交易工具&#xff0c;受到广大投资者的青睐。然而&#xff0c;由于中国大陆用户无法直接访问Exness官网&#xff0c;想要开户的大陆投资者需要通过特定方式才能完成注册。本文将详细介绍…

[Linux使用] apt dpkg 常用包管理命令

查找头文件信息&#xff1a; sudo apt install apt-file sudo apt-file update apt-file search gst.h 查找库文件位置&#xff1a; whereis gstreamer 查找已安装的库&#xff1a; dpkg -l |grep gstreamer

Rust:文件 launch.json 有什么用?

launch.json 是 Visual Studio Code&#xff08;VSCode&#xff09;中的一个配置文件&#xff0c;主要用于配置调试器。当你在 VSCode 中进行代码调试时&#xff0c;launch.json 文件告诉调试器如何启动和配置你的程序。 具体来说&#xff0c;launch.json 文件包含了以下信息&…

PDF批量编辑技巧:高效PDF转txt批量处理,轻松管理大量文档

随着信息技术的飞速发展&#xff0c;文档管理已成为日常工作中不可或缺的一部分。特别是当我们需要处理大量的PDF文件时&#xff0c;如何高效地进行编辑、转换和管理成为了一个重要的问题。本文将介绍一些PDF批量编辑的技巧&#xff0c;特别是如何将PDF批量转换为txt格式&#…

FLIR LEPTON3.5 热像仪wifi 科研实验测温采集仪

点击查看详情!点击查看详情点击查看详情点击查看详情点击查看详情点击查看详情点击查看详情点击查看详情点击查看详情点击查看详情点击查看详情点击查看详情点击查看详情点击查看详情点击查看详情 1、描述 这是一款桌面科研实验测温热成像多功能热像记录仪&#xff0c;小巧轻便…

linux命令——软硬链接

ln可以创建软硬链接&#xff0c;类似于windows系统里的快捷方式 同时还可以创建软链接的软链接 这时cat第二个软链接&#xff0c;依然能查看原文件内容 当使用ls -l查看文件属性时能看到&#xff0c;软链接后面的指向性 同时 &#xff0c;我们可以使用readlink来查看软链接所…

Android 蓝牙实战——蓝牙音乐播放/暂停调用(二十一)

通过前面的学习我们了解了蓝牙开发中的各个协议,同时也知道蓝牙音乐的开发需要使用的是蓝牙的 a2dp 和 avrcp,而对蓝牙音乐的控制使用的是 avrcp,这里我们就梳理一下蓝牙音乐播放的调用流程。 一、调用流程 在前面的 Avrcp 协议中,我们了解 App 可以通过 MediaSession 框架…

【牛客】排列计算

原题链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 如果直接涂色来计算单点权重&#xff0c;2e5*2e5必然超时。 所以用差分进行优化。 3. 代码实现 #include<bits/stdc.h> using name…

java的选择题

题目 来自牛客网 1.下列哪个是合法的 Java 标识符?() A.Tree&Glasses B.FirstJavaApplet C.FirstApplet D.273.5 正确答案是 B. FirstJavaApplet 和 C. FirstApplet。 分析&#xff1a; Java 标识符必须遵循以下规则&#xff1a; 1. 必须以字母&#xff08;A-Z 或 a-…

【八十二】【算法分析与设计】2421. 好路径的数目,928. 尽量减少恶意软件的传播 II,并查集的应用,元素信息绑定下标一起排序,元素通过下标进行绑定

2421. 好路径的数目 给你一棵 n 个节点的树&#xff08;连通无向无环的图&#xff09;&#xff0c;节点编号从 0 到 n - 1 且恰好有 n - 1 条边。 给你一个长度为 n 下标从 0 开始的整数数组 vals &#xff0c;分别表示每个节点的值。同时给你一个二维整数数组 edges &#xff…

【Vue】Vue packages version mismatch(vue 和 vue-template-compiler)

报错&#xff1a;Vue packages version mismatch 原因&#xff1a;vue和vue-template-compiler版本不一样解决&#xff1a;如上vue版本为 2.6.14&#xff0c;vue-template-comiler版本为2.7.16。将vue-template-comiler版本设置为和vue版本一致即可。 npm install vue-templat…

头歌-Java常用类

第一关String类 package step1;import java.util.Scanner;public class StringLearning {public static void main(String[] args) {Scanner scanner new Scanner(System.in);String stringExample scanner.next();String endStr " end";// --------------------…

【稳定检索|EI会议】✅2024年食品科学与生物医学国际会议(ICFSBS 2024)✅

2024 International Conference on Food Science and Biomedical Sciences 一、大会信息 会议名称&#xff1a;2024年食品科学与生物医学国际会议会议简称&#xff1a;ICFSBS 2024收录检索&#xff1a;提交Ei Compendex,CPCI,CNKI,Google Scholar等会议官网&#xff1a;http:/…

Windows安装RabbitMQ教程(附安装包)

需要两个安装包 Erlang 安装包: https://download.csdn.net/download/Brevity6/89274663 (自己从官网下载也可以) RabbitMQ Windows 安装包&#xff1a; https://download.csdn.net/download/Brevity6/89274667 (自己从官网下载也可以) Erlang安装 Erlang安装傻瓜式下一…