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

算法训练营第五十六天|583. 两个字符串的删除操作 72. 编辑距离

目录

  • Leetcode583. 两个字符串的删除操作
  • Leetcode72. 编辑距离

Leetcode583. 两个字符串的删除操作

文章链接:代码随想录
题目链接:583. 两个字符串的删除操作

思路:直接记录需要改(增或删)几个,也就是求不公共的子序列

class Solution {
public:int minDistance(string word1, string word2) {vector<vector<int>> dp(word1.size() + 1, vector<int>(word2.size() + 1));for (int i = 0; i <= word1.size(); i++) dp[i][0] = i;for (int j = 0; 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] + 2, min(dp[i][j - 1] + 1, dp[i - 1][j] + 1));}}return dp[word1.size()][word2.size()];}
};

也可以记录最长公共子序列,再减

class Solution {
public:int minDistance(string word1, string word2) {vector<vector<int>> dp(word1.size() + 1, vector<int>(word2.size() + 1));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] + 1;else dp[i][j] = max(dp[i][j - 1], dp[i - 1][j]);}}return word1.size() + word2.size() - dp[word1.size()][word2.size()] * 2;}
};

Leetcode72. 编辑距离

文章链接:代码随想录
题目链接:72. 编辑距离

思路:和上一题相比,差别在于多了替换,因此dp[i - 1][j - 1] 只需要多加一步即可变为dp[i][j]。

class Solution {
public:int minDistance(string word1, string word2) {vector<vector<int>> dp(word1.size() + 1, vector<int>(word2.size() + 1));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] + 1, min(dp[i - 1][j] + 1, dp[i][j - 1] + 1));}}return dp[word1.size()][word2.size()];}
};

第五十六天打卡,今天给周老师写了个冰层项目进展,耽误了一些学习进度,加油!!!

http://www.lryc.cn/news/286434.html

相关文章:

  • 使用WAF防御网络上的隐蔽威胁之目录穿越
  • Linux:vim的相关知识
  • Qt 国产嵌入式操作系统实现文字转语音功能(ekho库)
  • Redis常见类型及常用命令
  • 实战纪实 | 某配送平台zabbix 未授权访问 + 弱口令
  • 【第十五课】数据结构:堆 (“堆”的介绍+主要操作 / acwing-838堆排序 / c++代码 )
  • 前端JavaScript篇之JavaScript有哪些数据类型,它们的区别?
  • LeetCode---380周赛
  • archlinux 如何解决安装以后没有声音的问题
  • 什么是ORM思想?
  • 设计接口时,为其添加签名鉴权---详细教程
  • 5G+物联网:连接万物,重塑智慧社区,开启未来生活新纪元,助力智慧社区的革新与发展
  • [反转链表] [合并两个有序链表][分割链表]
  • 中文数据让LLM变笨?
  • 【代码随想录】刷题笔记Day54
  • 二.Winform使用Webview2在Demo1中实现地址简单校验
  • 从0开始学习C++ 第二十课:模板与泛型编程
  • pcl之滤波器(一)
  • java项目性能优化(MyBatis中开启查询缓存及flushCache与useCache的使用)
  • Unity3D控制人物移动的多种方法
  • 无人机打击激光器
  • Lingo数学建模基础
  • finalshell连接linux的kali系统
  • 2、Line Charts折线图
  • shell脚本获得所有数据库备份(整库备份,表级备份)
  • REVIT二次开发万能刷
  • JSON简单了解
  • HarmonyOS鸿蒙应用开发( 四、重磅组件List列表组件使用详解)
  • redis优化系列(六)
  • 【 Qt 快速上手】-②- Qt 环境搭建