力扣-动态规划-72 编辑距离

embedded/2025/3/5 9:10:55/

思路

  1. dp数组定义:0_i-1的word1转换成0_j-1的word2需要的最小操作步数为dp[i][j]
  2. 递推公式:
    if(word1[i-1] == word2[j-1]){dp[i][j] = dp[i-1][j-1];
    }else{// 删除    插入   替换dp[i][j] = min(dp[i-1][j] + 1, min(dp[i-1][j-1] + 1, dp[i][j-1] + 1));
    }

    i-1代表不看当前的i所以是删除;j-1代表不看当前的j所以是替换;二者同时减一说明是插入一个新的

  3. dp数组初始化:
    for(int i = 0; i <= word1.size(); i++){dp[i][0] = i;
    }
    for(int j = 1; j <= word2.size(); j++){dp[0][j] = j;
    }
  4. 遍历顺序:顺序
  5. 时间复杂度:      O(n*m)

代码

class Solution {
public:int minDistance(string word1, string word2) {vector< vector<int>> dp(word1.size() + 1, vector<int>(word2.size() + 1, 0));for(int i = 0; i <= word1.size(); i++){dp[i][0] = i;}for(int j = 1; j <= word2.size(); j++){dp[0][j] = j;}for(int i = 1; i <= word1.size(); i++){for(int j = 1; j<= word2.size(); j++){if(word1[i-1] == word2[j-1]){dp[i][j] = dp[i-1][j-1];}else{// 删除    插入   替换dp[i][j] = min(dp[i-1][j] + 1, min(dp[i-1][j-1] + 1, dp[i][j-1] + 1));}}}return dp[word1.size()][word2.size()];}
};


http://www.ppmy.cn/embedded/170141.html

相关文章

期权有哪些用处?期权和期货比优势在哪?

期权如同金融市场的“瑞士军刀”&#xff0c;既能防御风险&#xff0c;又能主动出击。相较于期货的“刚性对决”&#xff0c;期权更像“柔性博弈”——通过策略组合在不确定性中捕捉确定性收益。 期权有哪些用处&#xff1f; 期权的核心价值在于其非对称性——买方风险有限&am…

2025前端最新面试题-安全篇

你知道哪些前端攻击&#xff1f;该如何预防&#xff1f; XSS Cross Site Script 跨站脚本攻击手段&#xff1a;黑客将 JS 代码 插入到网页内容中&#xff0c;渲染时执行 JS 代码预防&#xff1a;特殊字符替换&#xff08;前端或者后端&#xff09;&#xff0c;如 < > 替…

FPGA学习篇——Verilog学习3

1 Verilog常用关键字 大概知道以下哪些是关键字就好&#xff0c;如何使用还是得在编写代码中来学习。 2 Verilog注释方法 Verilog有两种注释方式&#xff1a; 2.1 “ // ” 单行。 2.2 “ /* ” 可扩展多行。 3 Verilog程序基本框架 Verilog 的基本设计单元是“模块”( b…

python19-if和match的美

课程&#xff1a;B站大学 记录python学习&#xff0c;直到学会基本的爬虫&#xff0c;使用python搭建接口自动化测试就算学会了&#xff0c;在进阶webui自动化&#xff0c;app自动化 分支语句那些事儿 if 条件判断if...else 判断语句if...elif...else 多重条件分支嵌套也能在 e…

策略模式的C++实现示例

核心思想 策略模式是一种行为型设计模式&#xff0c;它定义了一系列算法&#xff0c;并将每个算法封装在独立的类中&#xff0c;使得它们可以互相替换。策略模式让算法的变化独立于使用它的客户端&#xff0c;从而使得客户端可以根据需要动态切换算法&#xff0c;而不需要修改…

主题巴巴主题源码 合辑打包下载+主题巴巴SEO插件 | WordPress主题模版

主题巴巴WordPress主题合辑打包下载&#xff0c;包含博客一号、博客二号、博客X、门户一号、门户手机版、图片一号、杂志一号、自媒体一号、自媒体二号和主题巴巴SEO插件。

Vue.js Vue 测试工具:Vue Test Utils 与 Jest

Vue.js Vue 测试工具&#xff1a;Vue Test Utils 与 Jest 在 Vue.js 的开发过程中&#xff0c;编写和执行测试是确保应用质量和稳定性的关键步骤。Vue Test Utils 和 Jest 是 Vue.js 官方推荐的测试工具&#xff0c;二者结合使用&#xff0c;可以高效地进行单元测试和集成测试…

Rust 面向对象特性解析:对象、封装与继承

1. Rust 的对象概念 在《设计模式&#xff1a;可复用面向对象软件的基础》&#xff08;Design Patterns: Elements of Reusable Object-Oriented Software&#xff09;一书中&#xff0c;作者将对象定义为&#xff1a; 对象是数据和操作该数据的过程的封装体。 按照这个定义&a…