[LeetCode]题解(python):072-Edit Distance
生活随笔
收集整理的這篇文章主要介紹了
[LeetCode]题解(python):072-Edit Distance
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目來源:
https://leetcode.com/problems/edit-distance/
?
題意分析:
word1最少通過多少步可以變成word2。word1只能進行一下的操作。a)插入一個字符,b)刪除一個字符,c)替代一個字符。比如“aba”變成“abc”只需要通過替代最后一個字符就可以達到。
?
題目思路:
這很明顯是一個動態規劃的問題。建立一個二維數組ans,其中ans[i][j]代表word1[i:]要變成word2[j:]至少需要多少步。那么如果word1[i] == word2[j],則ans[i][j] = ans[i+1][j+1],否者,ans[i][j]= min(ans[i +1][j],ans[ans[i][j+1],ans[i+1][j+1])/分別代表每個操作/ + 1。只要處理好初始化問題就可以了。
?
代碼(Python):
class Solution(object):def minDistance(self, word1, word2):""":type word1: str:type word2: str:rtype: int"""m,n = len(word1),len(word2)ans = [[0 for i in range(n + 1)] for j in range(m + 1)]for i in range(m + 1):ans[i][n] = m - ifor i in range(n + 1):ans[m][i] = n - im -= 1;n -= 1while m >= 0:t = nwhile t >= 0:if word1[m] == word2[t]:ans[m][t] = ans[m + 1][t + 1]else:ans[m][t] = min(ans[m][t+1],ans[m+1][t],ans[m+1][t+1]) + 1t -= 1m -= 1return ans[0][0] View Code
?
?
轉載請注明出處:http://www.cnblogs.com/chruny/p/5069714.html
轉載于:https://www.cnblogs.com/chruny/p/5069714.html
總結
以上是生活随笔為你收集整理的[LeetCode]题解(python):072-Edit Distance的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux USB驱动框架分析 【转】
- 下一篇: mysql replication错误常