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

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.lryc.cn/news/344184.html

相关文章:

  • 【Flask 系统教程 1】入门及配置
  • 石家庄河北银行的
  • 【CCNP ENCOR OCG】CHAPTER 2》Spanning Tree Protocol
  • docker无法映射/挂载根目录
  • C++中不要重新定义继承而来的non-virtual函数
  • C++ 对象型参数和返回值
  • LeetCode 字符串专题——KMP算法_28. 找出字符串中第一个匹配项的下标
  • 上班不想用脑子写代码了怎么办?那就试试Baidu Comate啊宝贝
  • 【管理咨询宝藏94】某国际咨询公司供应链财务数字化转型方案
  • C++_使用邻接表(链表-指针)实现有向图[完整示例及解释]
  • Gitlab自动化测试的配置
  • Qwen-Audio:推动通用音频理解的统一大规模音频-语言模型(开源)
  • 杭州破冰之举:全面取消住房限购,激发市场新活力
  • ICode国际青少年编程竞赛- Python-1级训练场-变量练习
  • 学习STM32第二十天
  • 智能BI(后端)-- 系统异步化
  • AI绘画Stable Diffusion 插件篇:智能标签提示词插件sd-danbooru-tags-upsampler
  • Android OpenMAX(六)OMXStore
  • Ubuntu下halcon软件的下载安装
  • 『ZJUBCA Collaboration』WTF Academy 赞助支持
  • Python开源工具库使用之运动姿势追踪库mediapipe
  • 【Android Studio】开启真机调试
  • CMakeLists.txt语法规则:部分常用命令说明四
  • 学习前端第三十二天(Rest 参数与 Spread 语法,变量作用域,闭包)
  • mysql从入门到起飞+面试基础题
  • 设计模式:命令模式
  • setinterval和settimeout区别在于
  • shell_结束进程脚本
  • GDPU unity游戏开发 碰撞器与触发器
  • IP地址定位技术在网络安全中的作用