360经典笔试 最小编辑距离(python)

2018-09-18  本文已影响0人  翩翩公子银圈圈

已知有两个字符韦str1,str2 ,现在需要把str1通过若干次操作修改成str2。可使用的操作包括插入,删除,替换,每个操作每次只能操作一个字符,求最少的操作次数。
示例:
输入:abcd
abce
输出:1
原理:https://blog.csdn.net/chichoxian/article/details/53944188
写的非常清晰易懂
代码:

import string
def editDist(s1, s2):
    m, n = len(s1) + 1, len(s2) + 1
    matrix=[[0]*n for i in range(m)]
    matrix[0]=[i for i in range(n)]
    for i in range(m):
        matrix[i][0]=i
    for i in range(1,m):
        for j in range(1,n):
            if(s1[i-1]==s2[j-1]):
                temp=0
            else:
                temp=1
            matrix[i][j]=min(matrix[i-1][j]+1,matrix[i][j-1]+1,matrix[i-1][j-1]+temp)
    return matrix[m-1][n-1]
# res = editDist('cafe', 'coffee')
print("请输入str1")
s1=str(input())
print("请输入str2")
s2=str(input())
mindist=editDist(s1,s2)
print(mindist)

上一篇 下一篇

猜你喜欢

热点阅读