題目:
給定兩個單詞 word1 和 word2,計算出將 word1 轉換成 word2 所使用的最少運算元 。
你可以對乙個單詞進行如下三種操作:
插入乙個字元
刪除乙個字元
替換乙個字元
示例 1:
輸入: word1 = "horse", word2 = "ros"
輸出: 3
解釋:
horse -> rorse (將 'h' 替換為 'r')
rorse -> rose (刪除 'r')
rose -> ros (刪除 'e')
示例 2:
輸入: word1 = "intention", word2 = "execution"
輸出: 5
解釋:
intention -> inention (刪除 't')
inention -> enention (將 'i' 替換為 'e')
enention -> exention (將 'n' 替換為 'x')
exention -> exection (將 'n' 替換為 'c')
exection -> execution (插入 'u')
思路:從上面三個問題來看,word1[0..i] 變換成 word2[0..j] 主要有三種手段,用哪個消耗少,就用哪個。
class solution(object):
def mindistance(self, word1, word2):
""":type word1: str
:type word2: str
:rtype: int
"""n1,n2=len(word1),len(word2)
tmp1=[0]*(n2+1)
tmp2=[0]*(n2+1)
#print(tmp1)
tmp2[0]=0
for i in range(1,n2+1):
tmp2[i]=i
#print(tmp2)
for j in range(1,n1+1):
tmp1[0]=j
#print(tmp1)
for k in range(1,n2+1):
if word1[j-1]==word2[k-1]:
tmp1[k]=tmp2[k-1]
else:
tmp1[k]=min(tmp2[k],tmp1[k-1],tmp2[k-1])+1
tmp1,tmp2=tmp2,tmp1
return tmp2[n2]
72 編輯距離
給定兩個單詞 word1 和 word2,計算出將 word1 轉換成 word2 所使用的最少運算元 你可以對乙個單詞進行如下三種操作 插入乙個字元 刪除乙個字元 替換乙個字元 示例 1 輸入 word1 horse word2 ros 輸出 3解釋 horse rorse 將 h 替換為 r r...
72 編輯距離
給定兩個單詞 word1 和 word2,計算出將 word1 轉換成 word2 所使用的最少運算元 你可以對乙個單詞進行如下三種操作 插入乙個字元 刪除乙個字元 替換乙個字元 示例 1 輸入 word1 horse word2 ros 輸出 3 解釋 horse rorse 將 h 替換為 r ...
72 編輯距離
編輯距離 給定兩個單詞 word1 和 word2,計算出將 word1 轉換成 word2 所使用的最少運算元 你可以對乙個單詞進行如下三種操作 插入乙個字元 刪除乙個字元 替換乙個字元 示例 1 輸入 word1 horse word2 ros 輸出 3 解釋 horse rorse 將 h 替...