题目

给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。

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

插入一个字符

删除一个字符

替换一个字符

思路

定义一个数组dp[i][j]代表第一个字符串前i个字符转换为第二个字符串前j个字符串所需要的缩少操作数。

如果word1[1] == word2[j],那么dp[i][j] = dp[i - 1][ j - 1]

不然呢,执行三个操作,分别对应dp[i - 1][j - 1] + 1dp[i - 1][j] + 1dp[i][j + 1]

本题中,需要额外注意数组的初始化、以及数组的大小。

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

LeetCode 编辑距离(DP)的更多相关文章

  1. HDU 4323 Magic Number(编辑距离DP)

    http://acm.hdu.edu.cn/showproblem.php?pid=4323 题意: 给出n个串和m次询问,每个询问给出一个串和改变次数上限,在不超过这个上限的情况下,n个串中有多少个 ...

  2. [LeetCode]72. 编辑距离(DP)

    题目 给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 . 你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符 示例 1 ...

  3. 51nod 1183 编辑距离(dp)

    题目链接:51nod 1183 编辑距离 #include<cstdio> #include<cstring> #include<algorithm> using ...

  4. leetcode distinct-subsequences(DP)

    参考https://oj.leetcode.com/problems/distinct-subsequences 动态规划方程 dp[i][j]=dp[i-1][j-1]+dp[i-1][j] (s( ...

  5. Codeforces 67C Sequence of Balls 编辑距离 dp

    题目链接:点击打开链接 有一个交换操作比較特殊,所以记录每一个点距离自己近期的那个字符的位置 然后交换就相当于把第一行要交换的2个字符 之间的字符都删掉 把第二行要交换的2个字符 之间的字符都插入第一 ...

  6. [Leetcode][Python][DP]Regular Expression Matching

    # -*- coding: utf8 -*-'''https://oj.leetcode.com/problems/regular-expression-matching/ Implement reg ...

  7. leetcode 编辑距离

    class Solution { public: int minDistance(string word1, string word2) { // Start typing your C/C++ so ...

  8. leetcode HouseRobber Dp Code

    #include <malloc.h> int MAX(int x,int y){ return x>y?x:y;} int rob(int* nums, int numsSize) ...

  9. Leetcode:【DP】Longest Palindromic Substring 解题报告

    Longest Palindromic Substring -- HARD 级别 Question SolutionGiven a string S, find the longest palindr ...

随机推荐

  1. 【HTML】如何在网页中屏蔽右键 ?

    如何在网页中屏蔽右键 众所周知,要保护一个页面,最基础的就是要屏蔽右键.而现在网页上用得最多的是function click(),即下面这段代码:   <script> function ...

  2. docker installation and usage

    From 一.环境配置的难题 软件开发最大的麻烦事之一,就是环境配置.用户计算机的环境都不相同,你怎么知道自家的软件,能在那些机器跑起来? 用户必须保证两件事:操作系统的设置,各种库和组件的安装.只有 ...

  3. c数据结构 -- 使用链表实现计数

    #include <stdio.h> #include <stdlib.h> typedef struct _node{ int value; struct _node *ne ...

  4. linux环境jacoco接入

    我们通常会将测试覆盖率分为两个部分,即“需求覆盖率”和“代码覆盖率”. 需求覆盖:指的是测试人员对需求的了解程度,根据需求的可测试性来拆分成各个子需求点,来编写相应的测试用例,最终建立一个需求和用例的 ...

  5. DE1-GHRD

    新建工程socs_system 进入菜单选择Tools---Qsys 配置hps系统 首先选择 在更改参数 配置hps的sdram各项参数 将名字改为hps_0 这样hps配置完成:在配置存储器和其他 ...

  6. node安装升级过程中遇到的问题汇总

    一.Node already installed, it's just not linked 第一步:sudo chown -R $(whoami) $(brew --prefix)/* 第二步:br ...

  7. spring(三):DefaultListableBeanFactory

  8. rancher说明为什么需要按照指定版本安装以及rancher和节点linux环境配置-docker指定版本安装

    rancher说明为什么需要按照指定版本安装以及rancher和节点linux环境配置-docker指定版本安装 待办 https://blog.csdn.net/CSDN_duomaomao/art ...

  9. CSS 盒子模型属性

    盒子模型(Flexible Box) 属性 属性 说明 CSS box-align 指定如何对齐一个框的子元素 3 box-direction 指定在哪个方向,显示一个框的子元素 3 box-flex ...

  10. zabbix4.2安装配置指南

    [声名]本实例中采用Linux CentOS 7系统 CentOS Linux release 7.6.1810 (Core) 1.安装LAMP环境: [root@localhost /]# yum ...