leetcode72
class Solution {
private:
int d[][];
public:
int minDistance(string word1, string word2)
{
int len1 = word1.length();
int len2 = word2.length();
for(int i=;i<=len1;i++)
d[i][]= i;
for(int j=;j<=len2;j++)
d[][j]=j;
for(int i=;i <=len1;i++)
{
for(int j=;j<=len2;j++)
{
int diff;
if(word1[i-] == word2[j-])
diff = ;
else
diff = ;
int temp = min(d[i-][j] + , d[i][j-] + );
d[i][j] = min(temp, d[i-][j-] + diff);
}
}
return d[len1][len2];
}
};
这是《趣学算法》一书中4-4节提供的代码,在leetcode上运行,速度比较慢,392ms(5.16%),12.9mb(5.22%)。
补充一个python的实现:
class Solution:
def minDistance(self, word1: str, word2: str) -> int:
m = len(word1)
n = len(word2)
dp = [[ for _ in range(n+)]for _ in range(m+)]
for j in range(n+):
dp[][j] = j
for i in range(m+):
dp[i][] = i
for i in range(,m+):
for j in range(,n+):
diff = if word1[i-] != word2[j-] else
minval = min(dp[i-][j]+,dp[i][j-]+)
minval = min(minval,dp[i-][j-]+diff)
dp[i][j] = minval
return dp[m][n]
240ms,16.4mb
下面提供leetcode中一个12ms,8.5mb的解决方案:
class Solution {
public:
int minDistance(string word1, string word2) {
int m = word1.length();
int n = word2.length();
vector<int> dp(m+, );
int i, j;
int temp, min;
for(i=;i<=m;i++)
dp[i] = i;
for(j=;j<=n;j++)
{
temp = dp[];
dp[]++;
for(i=;i<=m;i++)
{
min = temp + (word1[i-]!=word2[j-]);
min = (dp[i-]+)<min?(dp[i-]+):min;
min = (dp[i]+)<min?(dp[i]+):min;
temp = dp[i];
dp[i] = min;
}
}
return dp[m];
}
};
将第二种写法,转化为python语法:
class Solution:
def minDistance(self, word1: str, word2: str) -> int:
m = len(word1)
n = len(word2)
dp = list(range(m+))
for j in range(,n+):
temp = dp[]
dp[] +=
for i in range(,m+):
diff = if word1[i-] != word2[j-] else
minval = temp + diff
minval = min(minval,dp[i-]+)
minval = min(minval,dp[i]+)
temp = dp[i]
dp[i] = minval
return dp[m]
204ms,12.9mb
leetcode72的更多相关文章
- leetcode72. Edit Distance(编辑距离)
以下为个人翻译方便理解 编辑距离问题是一个经典的动态规划问题.首先定义dp[i][j表示word1[0..i-1]到word2[0..j-1]的最小操作数(即编辑距离). 状态转换方程有两种情况:边界 ...
- [leetcode72]Edit Distance(dp)
题目链接:https://leetcode.com/problems/edit-distance/ 题意:求字符串的最短编辑距离,就是有三个操作,插入一个字符.删除一个字符.修改一个字符,最终让两个字 ...
- leetcode72. Edit Distance
Given two words word1 and word2, find the minimum number of steps required to convert word1 to word2 ...
- [Swift]LeetCode72. 编辑距离 | Edit Distance
Given two words word1 and word2, find the minimum number of operations required to convert word1 to ...
- Java解决LeetCode72题 Edit Distance
题目描述 地址 : https://leetcode.com/problems/edit-distance/description/ 思路 使用dp[i][j]用来表示word1的0~i-1.word ...
- 动态规划 两个字符串之间的编辑距离 leetcode72
public static int minDistance(String word1, String word2) { char[] s1 = word1.toCharArray(); char[] ...
- 【1】【leetcode-72 动态规划】 编辑距离
(没思路,很典型,重要) 给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 . 你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替 ...
- leetcode72:combinations
题目描述 给出两个整数n和k,返回从1到n中取k个数字的所有可能的组合 例如: 如果n=4,k=2,结果为 [↵ [2,4],↵ [3,4],↵ [2,3],↵ [1,2],↵ [1,3],↵ [1, ...
- [leetcode72]166. Fraction to Recurring Decimal手动实现除法
让人火大的一道题,特殊情况很多 不过也学到了: java中int类型的最大值的绝对值比最小值的绝对值小1 int最小值的绝对值还是负的,除以-1也是 这种时候最好转为long类型进行处理 long n ...
随机推荐
- 在HTML中用循环语句
<%for(){% > <tr> <td></td> <td></td> </tr> <%}%> 注意 ...
- ADO.NET之SqlConnection、sqlcommand的应用(学习笔记)
一.知识描述点 1.SqlConnection (1)使用SqlConnection类可以连接到SQL Server数据库.SqlConnection对象的主要属性和方法如下: ——属性:Connec ...
- vue 关闭浏览器
在开发中的一个需求,vue中关闭浏览器, 直接使用window.close()在chrome.fireFox会不起作用 需要改为一下方式 window.open('about:blank','_sel ...
- JavaScript 简单的实现 sleep功能 .
function start(){ // console.log("Request handle 'start' was called."); function sleep(mil ...
- 1.3 解决pip使用异常问题
1.3 解决pip使用异常问题 1.3.1 pip出现异常有一小部分童鞋在打开cmd输入pip后出现下面情况:Didnot provide a command Did not provide a co ...
- Mad LIbs小游戏
c1=input('请输入摄氏温度;') c2=float(c1)*9/5+32 print('摄氏温度转换成华氏温度是{}'.format(c2)) name1=input('请输入名字:') na ...
- 使用parted对大于2T的磁盘进行分区
使用parted对磁盘进行分区 版本信息 版本 修改日期 修改人 修改内容 备注 V0.1 2018/09/06 初始化版本 讨论稿 ...
- zombodb 索引创建
索引的创建是zombodb 的核心,我们都是需要先创建table,然后创建索引,创建的时候我们可以指定es 集群的地址,同时可能需要使用 一些地址api(比如数据直接存储在es 中而不是pg 中) ...
- centos7忘记密码处理办法
centos7忘记密码处理办法 此界面按e进入grub编辑界面 进入grub编辑界面.把linux16这行的ro修改为rw init=/sysroot/bin/sh. 按ctrl+x进入单用户模式 登 ...
- easyUI默认图标的使用
使用格式如下: <table id="table" class="easyui-datagrid" style="width:600px;hei ...