LeetCode 72. 编辑距离(DP)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 72. 编辑距离(DP)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1. 題目
給定兩個單詞 word1 和 word2,計算出將 word1 轉(zhuǎn)換成 word2 所使用的最少操作數(shù) 。
你可以對一個單詞進行如下三種操作:
- 插入一個字符
- 刪除一個字符
- 替換一個字符
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/edit-distance
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
2. 解題
- 參考我的博客:編輯距離
類似題目:
LeetCode 編輯距離 II(DP)
LeetCode 583. 兩個字符串的刪除操作(動態(tài)規(guī)劃)
LeetCode 712. 兩個字符串的最小ASCII刪除和(DP,類似編輯距離)
LeetCode 1143. 最長公共子序列(動態(tài)規(guī)劃)
上面代碼是從字符非空開始的。
or
下面代碼是從空字符開始的,代碼更精簡。
copy 官網(wǎng)的 py3 代碼:
class Solution:def minDistance(self, word1: str, word2: str) -> int:n = len(word1)m = len(word2)# 有一個字符串為空串if n * m == 0:return n + m# DP 數(shù)組D = [ [0] * (m + 1) for _ in range(n + 1)]# 邊界狀態(tài)初始化for i in range(n + 1):D[i][0] = ifor j in range(m + 1):D[0][j] = j# 計算所有 DP 值for i in range(1, n + 1):for j in range(1, m + 1):left = D[i - 1][j] + 1down = D[i][j - 1] + 1left_down = D[i - 1][j - 1] if word1[i - 1] != word2[j - 1]:left_down += 1D[i][j] = min(left, down, left_down)return D[n][m]#作者:LeetCode-Solution #鏈接:https://leetcode-cn.com/problems/edit-distance/solution/bian-ji-ju-chi-by-leetcode-solution/ #來源:力扣(LeetCode) #著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。總結(jié)
以上是生活随笔為你收集整理的LeetCode 72. 编辑距离(DP)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 114. 二叉树展开为
- 下一篇: LeetCode 134. 加油站(贪心