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

day40-数据结构力扣

647. 回文子串

题目链接647. 回文子串 - 力扣(LeetCode)

思路

1. dp 数组定义

dp[i][j]:表示字符串下标 i 到 j 的子串是否是回文串,True是,False不是。

2. 递推公式

  • 情况 1:i == j(单个字符)→ 一定是回文

  • 情况 2:j = i+1(两个相邻字符)→s[i]==s[j]就是回文

  • 情况 3:j - i > 1(长度大于 2)首尾字符相等,且中间子串也是回文:dp[i][j]=(s[i]==s[j]) and dp[i+1][j−1]

3. 初始化

所有dp[i][i] = True,单个字符都是回文。

4. 遍历顺序

按子串长度从小到大遍历,先短后长。

5. 结果

遍历过程中统计所有dp[i][j] = True的总数。

提交

class Solution: def countSubstrings(self, s: str) -> int: n = len(s) # dp[i][j] 表示 s[i...j] 是否为回文子串 dp = [[False] * n for _ in range(n)] res = 0 # 遍历子串长度 len = 1 ~ n for length in range(1, n + 1): # 左端点i for i in range(n - length + 1): # 右端点j j = i + length - 1 if i == j: # 单个字符 dp[i][j] = True elif j == i + 1: # 两个字符 dp[i][j] = (s[i] == s[j]) else: # 多于两个字符:首尾相等且中间是回文 dp[i][j] = (s[i] == s[j]) and dp[i+1][j-1] # 是回文就计数+1 if dp[i][j]: res += 1 return res

516.最长回文子序列

题目链接516. 最长回文子序列 - 力扣(LeetCode)

思路

1. dp 定义

dp[i][j]:字符串下标 i~j的子串中,最长回文子序列长度

2. 递推公式

  • s[i] == s[j]:首尾字符相同,可以一起算进回文dp[i][j]=dp[i+1][j−1]+2

  • s[i] != s[j]:舍弃左或舍弃右,取最大值dp[i][j]=max(dp[i+1][j], dp[i][j−1])

3. 初始化

单个字符一定是回文:dp[i][i]=1

4. 遍历顺序

逆序遍历 i(从后往前),j 从 i+1 往后走。

为什么要逆序遍历i:

因为从递推公式里面看到,i是用i+1推出来的

5. 结果

dp[0][n-1]就是整个字符串最长回文子序列长度。

提交

class Solution: def longestPalindromeSubseq(self, s: str) -> int: n = len(s) # dp[i][j]:s[i...j] 最长回文子序列长度 dp = [[0] * n for _ in range(n)] # 初始化:单个字符 for i in range(n): dp[i][i] = 1 # i 逆序遍历 for i in range(n - 1, -1, -1): for j in range(i + 1, n): if s[i] == s[j]: dp[i][j] = dp[i+1][j-1] + 2 else: dp[i][j] = max(dp[i+1][j], dp[i][j-1]) return dp[0][n-1]
http://www.jsqmd.com/news/767568/

相关文章:

  • 效率提升指南:借助快马AI为现有React Native项目精准配置Hermes引擎
  • N_m3u8DL-CLI-SimpleG:3分钟搞定M3U8视频下载的终极图形界面指南
  • WPOpenClaw:构建离线AI研究环境,实现数据主权与本地化部署
  • MDB Tools深度实战:如何在Linux和macOS上高效操作Access数据库的完整解决方案
  • 别再只用真彩色了!手把手教你用ENVI主成分分析(PCA)给遥感图像‘美颜’与‘瘦身’
  • 基于MCP协议与视觉理解的AI Agent网页自动化实战
  • 2026年质量好的不锈钢铸件优质厂家汇总推荐 - 行业平台推荐
  • 基于X推荐算法的爆款内容预测工具:原理、部署与优化实战
  • 别再只会看控制台了!用Docker+SEQ给你的.NET Core应用装个‘日志黑匣子’
  • 电力系统分析 第一章
  • Taotoken 模型广场如何辅助开发者进行模型选型
  • Claude提示工程实战:构建结构化知识库与智能体工作流
  • 数据库性能优化实战:从索引到架构,根治慢查询与负载瓶颈
  • 量子电路经典模拟:ZX-演算与张量网络统一框架
  • Cbc整数规划求解器深度解析:混合整数线性规划实战指南
  • 别再被503困扰!手把手教你解决.NET 8.0应用在IIS上发布失败的几个关键配置
  • 鸿蒙ArkTS应用开发:手把手教你用lv-markdown-in插件优雅展示Markdown内容(含API9/10兼容指南)
  • 新手福音:用快马零代码基础制作九么动漫版本介绍页
  • Terra常见技术问题梳理与实战应用案例解析
  • PHP浏览器自动化新选择:hooman库的人性化API与CDP实战
  • 设计审美:从感知到实践的核心法则与趋势解析
  • 嘉励物方远心镜头
  • 深入解析yarmcp:轻量级高性能RPC框架的设计与实现
  • repo2txt:浏览器本地运行的代码仓库转文本工具,专为LLM上下文优化
  • VFPX/nfJson:为Visual FoxPro打造的高性能JSON序列化与反序列化工具
  • Swift调用LLVM:LLVMSwift让编译器开发更安全高效
  • 告别水印!Vue3项目中Stimulsoft.Reports.js的完整授权与激活配置指南
  • 学习进度更新延期
  • Cincoze DC-1300工业嵌入式计算机:模块化设计与严苛环境应用
  • 视频生成中的稀疏注意力优化技术与实践