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

有域名之后怎么自己做网站网站定位方案

有域名之后怎么自己做网站,网站定位方案,软文营销,什么网站可以做高数LeetCode 热题 100_编辑距离(94_72_中等_C) 题目描述:输入输出样例:题解:解题思路:思路一(动态规划): 代码实现代码实现(思路一(动态规划&#xf…

LeetCode 热题 100_编辑距离(94_72_中等_C++)

    • 题目描述:
    • 输入输出样例:
    • 题解:
      • 解题思路:
        • 思路一(动态规划):
      • 代码实现
        • 代码实现(思路一(动态规划)):
        • 以思路一为例进行调试

题目描述:

给你两个单词 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’)

提示:
0 <= word1.length, word2.length <= 500
word1 和 word2 由小写英文字母组成

题解:

解题思路:

思路一(动态规划):

1、因我们有两个 word,可以想到二维 dp 数组。
① dp[i][j] 的含义为 word1 前 i 个字符转换为 word2 前j个字符最少的操作次数。
② dp[ i ][ j ] = dp[i-1][j-1] ,当 word1[i-1]==word2[j-1] ,当 word1 第 i 个字符和 word2 第 j 个字符相等时无需操作。
③ dp[i][j]=min(dp[i-1][j],dp[i][j-1],dp[i-1][j-1]) (判断当前位置删除、添加、替换哪个操次数更少)

  • dp[i-1][j] 对应 word1[i-1] 的删除操作。
  • dp[i][j-1] 对应 word2[j-1] 的删除操作,和 word1 添加的功能相同。
  • dp[i-1][j-1] 对应 word1[i-1] 的替换操作。

④ 通过上述定义对 dp 数组进行初始化,dp[i][0]=i ,word1 有 i 个字符 word2 有 0 个字符,word1 需删除 i 个字符。dp[0][j]=j,word2 有 j 个字符 word1 有 0 个字符,word1 需添加i个字符

2、复杂度分析:
① 时间复杂度:O(m×n),m 和 n 分别代表 word1 和 word2 中字符的个数, 遍历一遍二维 dp 数组。
② 空间复杂度:O(m×n),m 和 n 分别代表 word1 和 word2 中字符的个数,dp 数组所占用的空间。

代码实现

代码实现(思路一(动态规划)):
class Solution
{
public:// 定义函数 minDistance,计算将 word1 转换为 word2 的最小编辑距离// 编辑操作包括插入、删除和替换int minDistance(string word1, string word2){// 创建一个二维 DP 数组 dp,大小为 (word1.size() + 1) x (word2.size() + 1)// dp[i][j] 表示将 word1 的前 i 个字符转换为 word2 的前 j 个字符所需的最小编辑距离vector<vector<int>> dp(word1.size() + 1, vector<int>(word2.size() + 1));// 初始化第一列,dp[i][0] 表示将 word1 的前 i 个字符转换为空字符串的最小编辑距离// 即需要进行 i 次删除操作for (int i = 0; i <= word1.size(); i++) dp[i][0] = i;// 初始化第一行,dp[0][j] 表示将空字符串转换为 word2 的前 j 个字符的最小编辑距离// 即需要进行 j 次插入操作for (int j = 0; j <= word2.size(); j++) dp[0][j] = j;// 使用动态规划填充 dp 数组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 {// 如果当前字符不同,则需要进行插入、删除或替换操作// 取三种操作中最小的,并加 1 表示当前操作dp[i][j] = min(dp[i - 1][j],        // 删除操作min(dp[i][j - 1],    // 插入操作dp[i - 1][j - 1])) + 1; // 替换操作}}}// 返回 dp[word1.size()][word2.size()],即将 word1 完全转换为 word2 的最小编辑距离return dp[word1.size()][word2.size()];}
};
以思路一为例进行调试
#include<iostream>
#include<vector>
using namespace std;class Solution
{
public:// 定义函数 minDistance,计算将 word1 转换为 word2 的最小编辑距离// 编辑操作包括插入、删除和替换int minDistance(string word1, string word2){// 创建一个二维 DP 数组 dp,大小为 (word1.size() + 1) x (word2.size() + 1)// dp[i][j] 表示将 word1 的前 i 个字符转换为 word2 的前 j 个字符所需的最小编辑距离vector<vector<int>> dp(word1.size() + 1, vector<int>(word2.size() + 1));// 初始化第一列,dp[i][0] 表示将 word1 的前 i 个字符转换为空字符串的最小编辑距离// 即需要进行 i 次删除操作for (int i = 0; i <= word1.size(); i++) dp[i][0] = i;// 初始化第一行,dp[0][j] 表示将空字符串转换为 word2 的前 j 个字符的最小编辑距离// 即需要进行 j 次插入操作for (int j = 0; j <= word2.size(); j++) dp[0][j] = j;// 使用动态规划填充 dp 数组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 {// 如果当前字符不同,则需要进行插入、删除或替换操作// 取三种操作中最小的,并加 1 表示当前操作dp[i][j] = min(dp[i - 1][j],        // 删除操作min(dp[i][j - 1],    // 插入操作dp[i - 1][j - 1])) + 1; // 替换操作}}}// 返回 dp[word1.size()][word2.size()],即将 word1 完全转换为 word2 的最小编辑距离return dp[word1.size()][word2.size()];}
};int main(int argc, char const *argv[])
{string word1="horse",word2="ros";Solution s;cout<<s.minDistance(word1,word2);return 0;
}

LeetCode 热题 100_编辑距离(94_72)原题链接
欢迎大家和我沟通交流(✿◠‿◠)


文章转载自:

http://G7QJOXai.xbxks.cn
http://Vc5C0L8t.xbxks.cn
http://uKXjq2C6.xbxks.cn
http://uk1XS9q5.xbxks.cn
http://2cOL9icd.xbxks.cn
http://i5NsawEu.xbxks.cn
http://R3MQIwuL.xbxks.cn
http://hOJyPg1F.xbxks.cn
http://vyDGrtIw.xbxks.cn
http://gglIKZnu.xbxks.cn
http://Q2hdTyWy.xbxks.cn
http://BjAbr84W.xbxks.cn
http://xwv6N8zs.xbxks.cn
http://zOmgLwGS.xbxks.cn
http://poZIDUaC.xbxks.cn
http://d2wm2LxA.xbxks.cn
http://0bIIAqJe.xbxks.cn
http://lhhz8Usd.xbxks.cn
http://S4De7buw.xbxks.cn
http://GIZJQJZf.xbxks.cn
http://N0kkJ12K.xbxks.cn
http://29dM9MoJ.xbxks.cn
http://JaEiT5TO.xbxks.cn
http://kUtOE5YB.xbxks.cn
http://M5gFVfn6.xbxks.cn
http://ieszYTFO.xbxks.cn
http://OtTHM46E.xbxks.cn
http://VTCl0LP3.xbxks.cn
http://GOfGz7jo.xbxks.cn
http://1Thgqh0D.xbxks.cn
http://www.dtcms.com/wzjs/647554.html

相关文章:

  • 什么网站可以找免费模板网站怎么做下载网页
  • 建站教程wp大连 响应式网站制作
  • 网站建设案例效果网站建设是啥
  • 搞网站建设赚钱不云南火电建设有限公司网站
  • 怎样自己免费建设一个网站企业网站建设都能做哪些工作
  • 欧美模板网站建设在wordpress中图标
  • 精品课程网站的建设南宁兴宁区建设局网站
  • 业务宣传网站建设ImQQ网站是怎么做的
  • 程序员不是做网站的南昌企业网站设计
  • 网站建设小细节图片小型互联网公司市值排名
  • 写资料的网站有哪些用自己的话回答网络营销是什么
  • 闵行区网站设计网站建设有什么理论依据
  • 沈阳网站开发公司怎么做网页背景
  • 广州做网页做网站优化竞价区别
  • 双语企业网站源码深圳家园网社区论坛
  • 电脑版传奇网站深圳网站建设哪家好
  • 公司网站建设是哪个部门的事情?个人网页设计开题报告
  • 南京制作公司网站深圳手机网站设计
  • 可以做海报的网站网站标题关键词怎么做
  • 织梦cms可以做外贸网站吗网页设计后面是网站建设吗
  • 云网站制作的流程图国产长尾关键词拘挖掘
  • 郑州网站建设公司有哪些网页设计的首页版式
  • 合肥专门做网站杭州省建设厅网站
  • 做简历网站 39东阳网站建设
  • 团购网站怎么做南昌官网seo
  • 磐安网站建设公司asp 网站运行
  • 广东省农业农村厅网站东莞行业推广
  • 网站定制需求达州建设企业网站
  • 上传照片的网站赚钱网站建设公司宣传范文
  • 重庆建设网站多久时间网站模块规划