A typical DP problem.
Solution:
# T:O(m*n) S:O(m*n) class Solution: # @param {string} word1 # @param {string} word2 # @return {integer} def minDistance(self, word1, word2): m, n = len(word1)+1, len(word2)+1 dp = [([0]*n) for i in xrange(m)] for i in xrange(n): dp[0][i] = i for i in xrange(m): dp[i][0] = i for i in xrange(1,m): for j in xrange(1,n): dp[i][j] = min(dp[i-1][j]+1, dp[i][j-1]+1, dp[i-1][j-1]+(1 if word1[i-1] != word2[j-1] else 0)) return dp[m-1][n-1]Run Time: 284 ms
No comments:
Post a Comment