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

【leetcode100】最长回文子串

1、题目描述

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

示例 1:

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

示例 2:

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

2、初始思路

2.1 思路

暴力求解法,依次遍历每一个子串,并进行判断,时间复杂度很高,为O(n³)。

2.2 代码

class Solution:def longestPalindrome(self, s: str) -> str:if len(s) == 1:return sn = len(s)max_res = ""for i in range(n):for j in range(i,n):if s[i:j+1] == s[i:j+1][::-1]:res = s[i:j+1]if len(res) > len(max_res):max_res = resreturn max_res

2.3 缺点

3 优化算法

3.1 思路--中心扩展法

从中间字符进行左右遍历,这样,每个字符被遍历的次数为n,时间复杂度降低为O(n²)。

3.2 代码

class Solution:def longestPalindrome(self, s: str) -> str:n = len(s)start, end = 0, 0def center(left, right):while left >= 0 and right < n and s[left] == s[right]:left -= 1right += 1return left+1, right-1for i in range(n):l1, r1 = center(i, i)l2, r2 = center(i, i+1)if r1 - l1 > end - start:start, end = l1, r1if r2 - l2 > end - start:start, end = l2, r2return s[start:end+1]
http://www.lryc.cn/news/581193.html

相关文章:

  • 探索 .NET 桌面开发:WinForms、WPF、.NET MAUI 和 Avalonia 的全面对比(截至2025年7月)
  • MAX3485在MCU芯片AS32S601-485通信外设中的应用
  • Java 创建对象过程 JVM 内存分配并发安全笔记
  • 介绍Flutter
  • 2025最新软件测试面试八股文
  • 在SoC数据加解密验证中使用 Python 的 gmssl 库
  • 【论文笔记】OctoThinker:突破 Llama 推理瓶颈的中期训练范式
  • web前端面试-- MVC、MVP、MVVM 架构模式对比
  • 硬件嵌入式工程师学习路线终极总结(二):Makefile用法及变量——你的项目“自动化指挥官”!
  • WEB攻防-文件包含LFIRFI伪协议编码算法无文件利用黑白盒
  • Go语言的web框架--gin
  • NX二次开发——NX二次开发-检查点是否在面上或者体上
  • MyChrome.exe与Selenium联动避坑指南:User Data目录冲突解决方案
  • 一篇文章快速入门TypeScript基础语法
  • 超详细yolov8/11-segment实例分割全流程概述:配置环境、数据标注、训练、验证/预测、onnx部署(c++/python)详解
  • Zigbee/Thread
  • Xshell使用技巧
  • 七牛云前端面试题及参考答案 (上)
  • 2025使用VM虚拟机安装配置Macos苹果系统下Flutter开发环境保姆级教程--下篇
  • C语言socket编程-补充
  • 测试时学习(TTT):打破传统推理界限的动态学习革命
  • vue router 里push方法重写为什么要重绑定this
  • JVM与JMM
  • RAL-2025 | 清华大学数字孪生驱动的机器人视觉导航!VR-Robo:面向视觉机器人导航与运动的现实-模拟-现实框架
  • rpgmaker android js常用属性解析
  • UI前端大数据可视化实战:如何设计高效的数据交互界面?
  • FLAN-T5:规模化指令微调的语言模型
  • 职坐标:AI图像识别NLP推荐算法实战
  • 【学习笔记】MySQL技术内幕InnoDB存储引擎——第5章 索引与算法
  • 针对工业触摸屏维修的系统指南和资源获取途径