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的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode No.72 编辑距离(动态规划)

leetcode 72. 编辑距离

⭐算法入门⭐《动态规划 - 串匹配》困难02 —— LeetCode 72. 编辑距离

LeetCode-72. 编辑距离

Leetcode 动态规划刷题总结

编辑距离---动态规划00001