【动态规划-5】72.编辑距离
题目描述给你两个单词word1和word2请返回将word1转换成word2所使用的最少操作数。你可以对一个单词进行如下三种操作插入一个字符删除一个字符替换一个字符示例 1输入word1 horse, word2 ros输出3解释horse - rorse (将 h 替换为 r) rorse - rose (删除 r) rose - ros (删除 e)示例 2输入word1 intention, word2 execution输出5解释intention - inention (删除 t) inention - enention (将 i 替换为 e) enention - exention (将 n 替换为 x) exention - exection (将 n 替换为 c) exection - execution (插入 u)解题思路方法一动态规划核心思路状态定义dp[i][j] 将word1的前i个字符转换成word2的前j个字符所需的最少操作数。状态转移对于word1[i-1]和word2[j-1]情况1字符相同dp[i][j] dp[i-1][j-1] 不需要操作情况2字符不同dp[i][j] 1 min( dp[i-1][j], // 删除 word1[i-1] dp[i][j-1], // 插入 word2[j-1] dp[i-1][j-1] // 替换 word1[i-1] 为 word2[j-1] )初始化dp[0][j] jword1 为空需要插入 j 个字符dp[i][0] iword2 为空需要删除 i 个字符具体过程示例word1 horse, word2 rosdp: r o s 0 1 2 3 h 1 1 2 3 o 2 2 1 2 r 3 2 2 2 s 4 3 3 2 e 5 4 4 3 dp[5][3] 3 ✅代码实现写法1二维 DPclass Solution { public: int minDistance(string word1, string word2) { int m word1.size(), n word2.size(); vectorvectorint dp(m 1, vectorint(n 1, 0)); // 初始化 for (int i 0; i m; i) dp[i][0] i; for (int j 0; j n; j) dp[0][j] j; // 状态转移 for (int i 1; i m; i) { for (int j 1; j n; j) { if (word1[i-1] word2[j-1]) { dp[i][j] dp[i-1][j-1]; } else { dp[i][j] 1 min({dp[i-1][j], dp[i][j-1], dp[i-1][j-1]}); } } } return dp[m][n]; } };写法2一维 DP空间优化class Solution { public: int minDistance(string word1, string word2) { int m word1.size(), n word2.size(); vectorint dp(n 1, 0); // 初始化word1 为空 for (int j 0; j n; j) dp[j] j; for (int i 1; i m; i) { int prev dp[0]; // 保存 dp[i-1][j-1] dp[0] i; // dp[i][0] i for (int j 1; j n; j) { int temp dp[j]; // 保存 dp[i-1][j] if (word1[i-1] word2[j-1]) { dp[j] prev; } else { dp[j] 1 min({dp[j], dp[j-1], prev}); } prev temp; // 更新 prev } } return dp[n]; } };复杂度分析方法时间复杂度空间复杂度二维 DPO(m × n)O(m × n)一维 DPO(m × n)O(n)关键细节1. 三种操作对应哪些状态操作状态转移含义删除dp[i-1][j]删除 word1[i-1] 后用前 i-1 个字符匹配 j 个插入dp[i][j-1]插入 word2[j-1] 后用 i 个字符匹配前 j-1 个替换dp[i-1][j-1]替换 word1[i-1] 为 word2[j-1] 后匹配前 i-1 和前 j-12. 为什么字符相同时不需要操作因为word1[i-1] word2[j-1]这两个字符已经匹配只需要看前面的部分。3. 一维 DP 的prev变量prev保存的是dp[i-1][j-1]左上角的值因为dp[j-1]在当前行已经被更新了不能直接用。总结要点说明核心思想dp[i][j]表示转换的最少操作数状态转移相同dp[i-1][j-1]不同1 min(删, 插, 换)初始化dp[i][0] idp[0][j] j时间复杂度O(m × n)空间复杂度O(n)

相关新闻

TRCA-SSVEP脑机接口分类:原理、实现与避坑指南

TRCA-SSVEP脑机接口分类:原理、实现与避坑指南

简介:这份资源是面向脑机接口(BCI)研究与学习者的 SSVEP 分类算法实践包,聚焦时间反转分类器(TRCA)在稳态视觉诱发电位解码中的应用,适合具备一定信号处理与机器学习基础、希望复现或改进 SSVEP…

2026/10/9 13:42:33 阅读更多 →
学术文献检索与全文获取的替代方案及长期维护策略

学术文献检索与全文获取的替代方案及长期维护策略

1. 学术资源访问方案的整体设计思路做科研或者写论文的朋友大概都有过这种体验:想查一篇文献,打开常用的学术搜索引擎,结果页面转了半天打不开,或者打开了却搜不出想要的结果。尤其是需要批量查文献、追踪某个领域最新进展的时候&…

2026/10/9 13:42:33 阅读更多 →
轻量化3D可视化:新能源电站数字孪生与运维实战解析

轻量化3D可视化:新能源电站数字孪生与运维实战解析

做新能源电站可视化的人近几年应该都有同感:业主单位对“三维大屏”的期待,已经从“能转两圈的炫酷Demo”,变成了一套必须能辅助生产运行的运维工具。我参与过不少地面光伏与光热电站的数字化交付,最深的体会是,真正能…

2026/10/9 13:42:32 阅读更多 →

最新新闻

PCA9422+STM32F446ZE构建高可靠嵌入式电源管理子系统

PCA9422+STM32F446ZE构建高可靠嵌入式电源管理子系统

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 21:02:47 阅读更多 →
Codex 接管剪辑台:MCP 视频剪辑工作流五款工具选型实测

Codex 接管剪辑台:MCP 视频剪辑工作流五款工具选型实测

Codex 接管剪辑台:MCP 视频剪辑工作流五款工具选型实测 【免费下载链接】plugins OpenAI Plugins 项目地址: https://gitcode.com/GitHub_Trending/plugins123/plugins 当「剪辑」这件事从软件操作变成一句自然语言指令,整个生产链条的逻辑就变了…

2026/10/10 21:02:47 阅读更多 →
OpenClaw博客系列第4篇:ToolCalling工具调用机制

OpenClaw博客系列第4篇:ToolCalling工具调用机制

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 21:02:47 阅读更多 →
多模态 Agent 实战:用 TaoToken 统一 Key 搭建图片生成代码的 Harness

多模态 Agent 实战:用 TaoToken 统一 Key 搭建图片生成代码的 Harness

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 21:02:47 阅读更多 →
参数暴涨22580倍之后:GPT-2与今天0.1B级小模型横评,个人开发者该选谁

参数暴涨22580倍之后:GPT-2与今天0.1B级小模型横评,个人开发者该选谁

参数暴涨22580倍之后:GPT-2与今天0.1B级小模型横评,个人开发者该选谁 【免费下载链接】gpt2 项目地址: https://ai.gitcode.com/hf_mirrors/openai-community/gpt2 2026 年,大模型界出了一个让所有人重新审视"规模"的数字&…

2026/10/10 21:02:47 阅读更多 →
横评 OpenAI / Claude / LangChain 三大官方 Skills:同一件事,三家各说各话

横评 OpenAI / Claude / LangChain 三大官方 Skills:同一件事,三家各说各话

横评 OpenAI / Claude / LangChain 三大官方 Skills:同一件事,三家各说各话 【免费下载链接】skills Skills Catalog for Codex 项目地址: https://gitcode.com/GitHub_Trending/skills4/skills 2026 年初,"Skills"接棒 MCP…

2026/10/10 21:01:46 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 11:14:25 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 1:36:08 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 11:14:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →