# 基于动态规划的编辑距离 defedit_dist(str1, str2): # m, n 分别字符串str1,str2的长度 m, n = len(str1), len(str2) # 构建二维数组来储存子问题 dp = [[0for x in range(n+1)] for x in range(m+1)] # 利用动态规划算法,填充数据 for i in range(m+1): for j in range(n+1): # 假设第一个字符串为空,则转换的代价为1(j次的插入) if i == 0: dp[i][j] = j elif j == 0: dp[j][j] = i # 如果最后一个字符相等,就不会产生代价 elif str1[i-1] == str2[j-1]: dp[i][j] = dp[i-1][j-1] else: dp[i][j] = 1 + min(dp[i][j-1], # insert dp[i-1][j], # remove do[i-1][j-1]) # replace return dp[m][n]