72. Edit Distance
https://leetcode.com/problems/edit-distance/
经典中的经典
dp[i[[j] how to covert word1[:i] to word2[:j]
if word1[i] != word2[j]:
(1) delete word1[i-1] and then word1[:i-1] to word2[:j] and
(2) word1[:i] to word2[:j-1] and insertion on word2[j-1]
(3) word1[:i-1] to word2[:j-1] and replace word1[i-1] with word2[j-1]
class Solution:
def minDistance(self, word1: str, word2: str) -> int:
m = len(word1)
n = len(word2)
dp=[[0]*(n+1) for _ in range(m+1)]
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],dp[i][j-1],dp[i-1][j-1]])+1
return dp[m][n]
Last updated
Was this helpful?