leetcode-编辑距离(动态规划)-72
Posted 天津 唐秙
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode-编辑距离(动态规划)-72相关的知识,希望对你有一定的参考价值。
题目要求
给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。
你可以对一个单词进行如下三种操作:
插入一个字符
删除一个字符
替换一个字符
图解
代码实现
#include <iostream>
#include <vector>
#include <math.h>
#include <algorithm>
using namespace std;
int minDistance(string& word1, string &word2) {
int len1 = word1.length();
int len2 = word2.length();
vector<vector<int>> dp(len1 + 1, vector<int>(len2 + 1));
for (int j = 0; j <= len2; j++)
{
dp[0][j] = j;
}
for (int i = 0; i <= len1; i++)
{
dp[i][0] = i;
}
for (int i = 1; i <= len1; i++)
{
for (int j = 1; j <= len2; j++)
{
dp[i][j] = min(dp[i - 1][j], dp[i][j - 1]) + 1;
if (word1[i - 1] == word2[j - 1])
{
dp[i][j] = min(dp[i][j], dp[i - 1][j - 1]);
}
else
{
dp[i][j] = min(dp[i][j], dp[i - 1][j - 1] + 1);
}
}
}
return dp[len1][len2];
}
int main()
{
string a = "horse";
string b = "ros";
int ret = minDistance(a, b);
cout << ret << endl;
return 0;
}
以上是关于leetcode-编辑距离(动态规划)-72的主要内容,如果未能解决你的问题,请参考以下文章