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

力扣 5. 最长回文子串 python AC

动态规划

class Solution:def longestPalindrome(self, s):size = len(s)maxl = 1start = 0dp = [[False] * size for _ in range(size)]for i in range(size):dp[i][i] = Truefor L in range(2, size + 1):for i in range(size):j = L + i - 1if j >= size:breakif s[i] == s[j]:if L >= 4:dp[i][j] = dp[i + 1][j - 1]else:dp[i][j] = Trueif dp[i][j] and maxl < L:maxl = Lstart = ireturn s[start:start + maxl]

这里将dp数组含义设为当前位置是否是回文子串

--创建二维dp[i][j],表示从索引i到索引j位置的子串是否是回文子串(初始值为False)

--将每个单个字符设置为True(长度为1的子串一定是回文子串)

--从2到size遍历L(代表子串长度)(从长度为2开始,因为长度为1的上一步已经标为了True)

  --从0到size-1遍历i(代表子串起点)

    --通过子串长度L和子串起点i求出子串终点(索引为L + i - 1)

    --如果终点超过了整个字符串则退出

    --如果i位置字符和j位置字符相同

      --如果长度大于等于4

        --dp[i][j]是否是回文子串 = dp[i+1][j-1]是否是回文子串

      --否则(长度小于4,即没有更小的区间来推断)

        --dp[i][j] = True

      --判断长度是否比记录过的最大长度最大

        --是的话更新最大长度,并记录此时的起点i

--返回字符串s从start到start+最大长度的子串

http://www.lryc.cn/news/357503.html

相关文章:

  • 【微机原理及接口技术】可编程计数器/定时器8253
  • 23种设计模式之一— — — —装饰模式详细介绍与讲解
  • 2024年2月28日 星期三
  • Java中的super关键字详解
  • 消消乐游戏开发,三消游戏,消除小游戏
  • 三十三、openlayers官网示例Drawing Features Style——在地图上绘制图形,并修改绘制过程中的颜色
  • Vue——事件修饰符
  • Go语言GoFly框架快速新增接口/上手写代码
  • 【Vue】v-else 和 v-else-if
  • 一致性hash算法原理图和负载均衡原理-urlhash与least_conn案例
  • MySQL建库
  • 系统资源监控器工具glances的使用详解
  • JDBC使用QreryRunner简化SQL查询注意事项
  • 前缀和(下)
  • 【排序算法】希尔排序
  • 数学建模--LaTex插入表格详细介绍
  • 未来已来:Flutter引领的安卓与跨平台开发奇幻之旅
  • 如何将Windows PC变成Wi-Fi热点?这里提供详细步骤
  • 报错:Cannot invoke “springfox.documentation.service.ParameterType.getIn()“
  • 一个生动的例子——通过ERC20接口访问Tether合约
  • 新媒体时代,LCD电子价签赋予零售场景新活力
  • 芋道源码 / yudao-cloud:前端技术架构探索与实践
  • 2024 angstromCTF re 部分wp
  • STL库--priority_queue
  • 网络编程 —— Http使用httpClient实现页面爬虫
  • 【本地运行chatgpt-web】启动前端项目和service服务端项目,也是使用nodejs进行开发的。两个都运行成功才可以使用!
  • TOGAF企业架构章节(核心)知识点(一)
  • 手摸手教你uniapp原生插件开发
  • C++进程间通信 消息队列
  • mysql中InnoDB的统计数据