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

力扣_字符串4—编辑距离

题目

给你两个单词 w o r d 1 word1 word1 w o r d 2 word2 word2, 请返回将 w o r d 1 word1 word1 转换成 w o r d 2 word2 word2 所使用的最少操作数 。

你可以对一个单词进行如下三种操作:

  • 插入一个字符
  • 删除一个字符
  • 替换一个字符

方法—动态规划

  • 定义 d p dp dp 数组, d p [ i ] [ j ] dp[i][j] dp[i][j] 表示 w o r d 1 [ 0... i − 1 ] word1[0...i-1] word1[0...i1] w o r d 2 [ 0... j − 1 ] word2[0...j-1] word2[0...j1] 的编辑距离
  • 边界条件 d p [ 0 ] [ j ] = j , d p [ i ] [ 0 ] = i dp[0][j] = j, dp[i][0] = i dp[0][j]=j,dp[i][0]=i
  • 转移:
    • w o r d 1 [ i − 1 ] = = w o r d [ j − 1 ] word1[i-1] == word[j-1] word1[i1]==word[j1] d p [ i ] [ j ] = m i n ( d p [ i − 1 ] [ j ] + 1 , d p [ i ] [ j − 1 ] + 1 , d p [ i ] [ j ] ) dp[i][j] = min(dp[i-1][j]+1,dp[i][j-1]+1,dp[i][j]) dp[i][j]=min(dp[i1][j]+1,dp[i][j1]+1,dp[i][j])
    • w o r d 1 [ i − 1 ] ! = w o r d [ j − 1 ] word1[i-1] != word[j-1] word1[i1]!=word[j1] d p [ i ] [ j ] = m i n ( d p [ i − 1 ] [ j ] + 1 , d p [ i ] [ j − 1 ] + 1 , d p [ i ] [ j ] + 1 ) dp[i][j] = min(dp[i-1][j]+1,dp[i][j-1]+1,dp[i][j]+1) dp[i][j]=min(dp[i1][j]+1,dp[i][j1]+1,dp[i][j]+1)

代码

class Solution {
public:int minDistance(string word1, string word2) {int n1 = word1.size();int n2 = word2.size();if(n1*n2 == 0)return n1+n2;vector<vector<int>> dp(n1+1, vector<int>(n2+1));for(int i = 1; i < n1+1; i++){dp[i][0] = i;}for(int i = 1; i < n2+1; i++){dp[0][i] = i;}for(int i = 1; i < n1+1; i++){for(int j = 1; j < n2+1; j++){if(word1[i-1] == word2[j-1]){dp[i][j] = min(dp[i-1][j]+1, min(dp[i][j-1]+1, dp[i-1][j-1]));}else{dp[i][j] = min(dp[i-1][j]+1, min(dp[i][j-1]+1, dp[i-1][j-1]+1));}}}return dp[n1][n2];}
};
http://www.lryc.cn/news/298840.html

相关文章:

  • MySQL篇----第二十篇
  • Promise 基础
  • RPA财务机器人之UiPath实战 - 自动化操作Excel进行财务数据汇总与分析之流程建立与数据读取、处理、汇总、分析
  • 华为机试真题实战应用【赛题代码篇】-输入整型数组和排序标识/根据排序标识flag给数组排序(附Java、C++和python代码)
  • 【算法随想录01】环形链表
  • macOS Sonoma 14.3.1(23D60)发布
  • 2024-02-11 叮当鸭-平台系统-第三次重构-目标确定
  • Android7.0-Fiddler证书问题
  • Kotlin:单例模式(项目使用实例)
  • vue百度地图的和element输入框/v-region的联动
  • 搜索+哈希/平衡树,LeetCode 987. 二叉树的垂序遍历
  • 蓝桥杯每日一题之内存问题
  • Django前后端分离之后端实践2
  • windowsserver 2016 PostgreSQL9.6.3-2升级解决其安全漏洞问题
  • Java实现免税店商城管理系统 JAVA+Vue+SpringBoot+MySQL
  • 【Linux】信号
  • [NISACTF 2022]easyssrf
  • 在Linux系统中设置全局HTTP代理的步骤与技巧
  • 即席查询框架怎么选?
  • 【C语言】实现双向链表
  • Python操作MySQL基础
  • 【数学建模】【2024年】【第40届】【MCM/ICM】【E题 财产保险的可持续性】【解题思路】
  • SpringCloud--Eureka注册中心服务搭建注册以及服务发现
  • ansible shell模块 可以用来使用shell 命令 支持管道符 shell 模块和 command 模块的区别
  • qss的使用
  • archlinux 使用 electron-ssr 代理 socks5
  • macos安装local模式spark
  • 机器学习算法之支持向量机(SVM)
  • 线性判别分析(LDA)
  • Vue 前置导航