From 6b55d3eceb7c3930552126d39e1da2d649493d9f Mon Sep 17 00:00:00 2001 From: Chenjie Xu Date: Wed, 11 Nov 2020 16:29:21 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=9072.=20=E7=BC=96=E8=BE=91=E8=B7=9D?= =?UTF-8?q?=E7=A6=BB=E3=80=91=E3=80=90Python=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 动态规划系列/编辑距离.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/动态规划系列/编辑距离.md b/动态规划系列/编辑距离.md index 27b8c22..ae6ff4e 100644 --- a/动态规划系列/编辑距离.md +++ b/动态规划系列/编辑距离.md @@ -290,3 +290,31 @@ class Node {

+ +[ChenjieXu](https://github.com/ChenjieXu) 提供Python版本代码: + +```python3 +def minDistance(word1, word2): + m, n = len(word1), len(word2) + # 创建 DP 数组 + dp = [[0] * (n + 1) for _ in range(m + 1)] + + # base case初始化 + for i in range(m + 1): + dp[i][0] = i + for j in range(n + 1): + dp[0][j] = j + + # 自底向上求解 + for i in range(1, m + 1): + for j in range(1, n + 1): + # 状态转移方程 + 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, + dp[i][j - 1] + 1, + dp[i - 1][j - 1] + 1) + # 储存着整个 word1 和 word2 的最小编辑距离 + return dp[m][n] +````