1. 动态规划专题精讲字符串操作与编辑距离实战作为一名刷过300动态规划题的算法工程师我深知字符串相关的DP问题是面试中最常出现的拦路虎。这次代码随想录训练营的55-57天内容恰好覆盖了字符串处理的六大经典题型。我将结合自己在大厂面试中出题和解题的双重经验带大家深度剖析这些题目背后的统一解题框架。2. 核心题目解析与DP定义2.1 判断子序列392题这道题看似简单却暗藏玄机。给定字符串s和t判断s是否为t的子序列。双指针解法虽然直观但DP解法才是理解后续难题的基础。def isSubsequence(s: str, t: str) - bool: dp [[0]*(len(t)1) for _ in range(len(s)1)] for i in range(1, len(s)1): for j in range(1, len(t)1): if s[i-1] t[j-1]: dp[i][j] dp[i-1][j-1] 1 else: dp[i][j] dp[i][j-1] # 只能删除t的字符 return dp[-1][-1] len(s)关键点在于dp[i][j]表示s[0:i]和t[0:j]的最长公共子序列长度。当字符不匹配时只能选择删除t的字符j前移这与后续115题形成鲜明对比。2.2 不同的子序列115题这道hard题让很多同学头疼其实只要理解状态转移的物理意义就能迎刃而解。求s中通过删除字符得到t的不同方式数目需要特别注意初始化条件和递推关系。def numDistinct(s: str, t: str) - int: dp [[0]*(len(s)1) for _ in range(len(t)1)] for j in range(len(s)1): dp[0][j] 1 # 空串是任何字符串的子序列 for i in range(1, len(t)1): for j in range(1, len(s)1): if t[i-1] s[j-1]: dp[i][j] dp[i-1][j-1] dp[i][j-1] else: dp[i][j] dp[i][j-1] return dp[-1][-1]关键技巧当s[j-1]匹配t[i-1]时可以选择匹配或者不匹配相当于删除s的字符这是与392题的本质区别。3. 编辑距离系列问题3.1 两个字符串的删除操作583题这道题可以看作编辑距离的简化版只允许删除操作。我发现很多同学会陷入一个误区——直接求最长公共子序列然后用总长度减去。其实更直观的DP定义是def minDistance(word1: str, word2: str) - int: dp [[0]*(len(word2)1) for _ in range(len(word1)1)] for i in range(len(word1)1): dp[i][0] i for j in range(len(word2)1): dp[0][j] j for i in range(1, len(word1)1): for j in range(1, len(word2)1): if word1[i-1] word2[j-1]: dp[i][j] dp[i-1][j-1] else: dp[i][j] min(dp[i-1][j], dp[i][j-1]) 1 return dp[-1][-1]3.2 编辑距离72题这是DP领域的经典问题也是谷歌面试的高频题。完整的编辑距离需要考虑插入、删除、替换三种操作。我在面试候选人时最看重的是能否说清楚状态转移方程的物理意义。def minDistance(word1: str, word2: str) - int: dp [[0]*(len(word2)1) for _ in range(len(word1)1)] for i in range(len(word1)1): dp[i][0] i for j in range(len(word2)1): dp[0][j] j for i in range(1, len(word1)1): for j in range(1, len(word2)1): if word1[i-1] word2[j-1]: dp[i][j] dp[i-1][j-1] else: dp[i][j] min( dp[i-1][j], # 删除word1[i-1] dp[i][j-1], # 插入word2[j-1] dp[i-1][j-1] # 替换 ) 1 return dp[-1][-1]实战经验在面试白板编程时建议先写出状态转移方程再写代码这样即使代码有小错误面试官也能理解你的思路。4. 回文串专题4.1 回文子串647题这道题要求统计字符串中回文子串的数量。常规中心扩展法虽然简单但DP解法更能锻炼思维。我推荐使用二维DP记录子串[i,j]是否为回文。def countSubstrings(s: str) - int: n len(s) dp [[False]*n for _ in range(n)] res 0 for i in range(n-1, -1, -1): for j in range(i, n): if s[i] s[j]: if j - i 1: res 1 dp[i][j] True elif dp[i1][j-1]: res 1 dp[i][j] True return res4.2 最长回文子序列516题与子串不同子序列不要求连续。这道题的DP定义非常巧妙dp[i][j]表示s[i..j]的最长回文子序列长度。def longestPalindromeSubseq(s: str) - int: n len(s) dp [[0]*n for _ in range(n)] for i in range(n): dp[i][i] 1 for i in range(n-1, -1, -1): for j in range(i1, n): if s[i] s[j]: dp[i][j] dp[i1][j-1] 2 else: dp[i][j] max(dp[i1][j], dp[i][j-1]) return dp[0][n-1]5. 动态规划解题方法论通过这六道题的训练我总结出字符串DP问题的通用解题框架明确DP数组含义90%的困难来自于定义不清确定初始条件特别是空字符串的处理分析状态转移字符匹配/不匹配时的不同处理考虑遍历顺序i/j的递增或递减方向影响结果验证边界条件单字符、空串等特殊情况常见错误排查表错误现象可能原因解决方案数组越界初始化不全检查dp数组行列数是否1结果偏小状态转移漏情况重新分析字符匹配时的选择结果偏大重复计算检查递推公式是否包含多余操作超时未优化空间考虑状态压缩如滚动数组在面试场景中建议按照以下步骤应对DP问题先用具体例子画出DP表格口头解释状态转移逻辑写出基础状态转移方程讨论边界条件和初始化最后编码实现6. 进阶训练建议掌握这些基础题型后可以尝试以下变种题目提升能力最短回文串添加214题回文分割II132题正则表达式匹配10题通配符匹配44题我个人的训练心得是每天坚持做2道DP题一个月后会有质的飞跃。建议准备一个错题本记录每道题的DP定义和状态转移方程定期复习。对于字符串DP问题要特别注意画图辅助理解推荐使用二维表格可视化递推过程。
企业数字化 ERP 产品动态
相关推荐
ASR语音模型训练:从原理到实践 1. ASR语音模型训练概述 自动语音识别(Automatic Speech Recognition, ASR)技术正在深刻改变人机交互方式。作为AI领域的重要分支,ASR系统能够将人类语音实时转换为可处理的文本数据,为智能客服、语音助手、会议记录等场景提供基础支持。近年来ÿ… · 2026/11/12 23:21:15
Java Swing+MySQL宿舍管理系统:从课设源码到事务排错 简介:面向高校计算机相关专业学生,尤其是正在完成数据库课程设计或 Java 桌面应用实训的学习者,这套基于 MySQL 与 Java Swing 的学生宿舍管理系统工程,可以作为选题参考、二次开发基础或答辩演示材料。压缩包共 334 个文件、约 1… · 2026/11/10 9:17:03
Superpowers技能系统实战:从零搭建可插拔能力管理框架 1. 从“superpowers”这个热词说起:它到底是什么 第一次看到“superpowers”这个词挂在热搜上的时候,我下意识以为是某部新上映的超级英雄电影,点进去才发现,讨论的核心其实是一套围绕“技能扩展”和“能力增强”的工作流思路。简… · 2026/11/8 3:12:01
电工证需到哪里考试电子证书怎么申请最稳妥 电工证需到哪里考试电子证书怎么申请最稳妥 你是不是也正被“急需特种作业证才能上岗找工作”这个问题困扰?特别是像商丘房建工程这些行业,电工证不仅是上岗的门槛,更是保障你安全作业的“护身符”。现在,很多企业招聘电工时,都会要求持有 电子证书… · 2026/11/12 23:20:50
电工证能异地考试么 怎么报名全知道 电工证能异地考试么 怎么报名全知道 实操考试心里没底怕挂科?你不是一个人,很多刚入行或者准备转行的电工都担心这个。电工证作为特种作业操作证,是从事电力作业的“入场券”,但很多人并不清楚, 电工证能异地考试么… · 2026/11/12 23:20:50
吉安县电工证报考地点怎么报名,外省证书能转吗? 吉安县电工证报考地点怎么报名,外省证书能转吗? 之前考的证在外省能不能转过来?这个问题几乎每个想在吉安县从事电工工作的人都问过。别急,下面我来告诉你 吉安县电工证报考地点怎么报名 ,以及你手中的外省证书是否能在本地继续使用。… · 2026/11/12 23:20:50
60岁还能续电工证?电子证书复审流程全攻略 60岁还能续电工证?电子证书复审流程全攻略 证书过期了不知道怎么复审延期?特别是像你这样的老电工,手里拿着几十年的电工证,突然发现有效期要到了,不知道还能不能续证?别急,今天就带你从头理清楚60岁还能续电工证的整个流程,还有电子证书怎么操作… · 2026/11/12 23:20:50
工地太忙根本没时间复习考试?黔江电工证学校网上查询最全攻略来了 工地太忙根本没时间复习考试?黔江电工证学校网上查询最全攻略来了 工地太忙根本没时间复习考试?别急,黔江电工证学校网上查询的流程其实比你想的简单,关键是你得知道怎么操作,怎么选对学校,怎么避开坑。今天我就来聊聊这个事,从报考条件、培训避坑、考… · 2026/11/12 23:20:50
丰都电工证办理点怎么报名不踩坑?怕考不过白交培训费的看过来 丰都电工证办理点怎么报名不踩坑?怕考不过白交培训费的看过来 你是不是也在为丰都电工证办理点怎么报名发愁?怕交了培训费,最后考试还不过,白白浪费时间和钱?这不是个别现象,很多工人和企业在报名时都遇到过类似问题。今天就来告诉你,… · 2026/11/12 23:19:50
电工证丢失还能补吗?千万别踩坑,丢了证等于失业 电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。… · 2026/11/12 14:09:01
电力电缆作业证直播报名入口与办理流程良心建议 电力电缆作业证直播报名入口与办理流程良心建议 你是不是也担心学历不高报不了名?别急,今天就给你讲讲 电力电缆作业证直播 的报名流程和那些你必须知道的干货, 良心建议 在这里,别错过。 电力电缆作业证直播报名需要什么条件?… · 2026/11/11 19:07:25
英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 怕考不过白交培训费?英德电工证报考费多少钱,你真的了解吗?现在市面上培训机构五花八门,价格参差不齐,很多人一不小心就花了冤枉钱,结果还考不过。别急,今天就来给你说清楚英德电工证的… · 2026/11/11 17:14:54
电工证设年审有效期多久官方回应来了,工地太忙根本没时间复习考试 电工证设年审有效期多久官方回应来了,工地太忙根本没时间复习考试 工地太忙根本没时间复习考试,这是很多一线电工、焊工、高处作业人员的真实写照。尤其是像你这样刚毕业的鹤壁工程类毕业生,一边要找工作,一边要考证,时间紧张,复习效率低。但你可能不知… · 2026/11/12 0:00:56
新乡电工证实操怕挂科?电工作业动漫图+报考避坑全解析 新乡电工证实操怕挂科?电工作业动漫图+报考避坑全解析 实操考试心里没底怕挂科?你不是一个人。新乡的水利工程从业者,很多在报考电工证的时候都担心自己操作不熟练、考试不通过, 千万别踩坑 ,选对资料和方法真的能提高通过率。… · 2026/11/12 0:00:56
网电工证千万别踩坑:实操考试心里没底怕挂科怎么破? 网电工证千万别踩坑:实操考试心里没底怕挂科怎么破? 实操考试心里没底怕挂科,这是很多准备报考【网电工证】的学员最真实的感受。尤其是在高压电工、低压电工等工种上,操作环节的容错率极低,一旦失误就可能直接被判定不合格。很多人因为担心挂科而放弃考… · 2026/11/12 0:00:56
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/12 4:35:34
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/12 4:36:01
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/12 21:15:21