日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

[LeetCode]题解(python):072-Edit Distance

發布時間:2024/4/17 python 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。