1、题目
实现一个函数,给定两个单词,得出从源单词变到目标单词所需要的最小编辑距离(也就是得分最少),返回总得分与编辑操作过程
可以进行的操作有:
copy:从源单词复制一个字母到目标单词
delete:从源单词删除一个字母
insert:在目标单词插入一个字母
参数:两个字符串,即源单词original与目标单词target,以及不同操作对应的分值,即一个字典
返回值:一个整数与一个列表,最低的分数与操作过程,示例见检验
2、思路
3、代码一:动态规划
def dpWordEdit(original, target, oplist):
score = 0
operations = []
# 请在此编写你的代码(可删除pass语句)
orlen=len(original)
talen=len(target)
myScoreList=[[0 for j in range(talen+1)] for i in range(orlen+1) ]
for j in range(talen+1):
myScoreList[0][j]=j*oplist['insert']
operations.append('insert %s'%target[j-1])
for i in range(orlen+1):
myScoreList[i][0]=i*oplist['delete']
operations.append('delete %s'%original[i-1])
for i in range(1,orlen+1):
for j in range(1,talen+1):
delete=myScoreList[i-1][j]+oplist['delete']
insert=myScoreList[i][j-1]+oplist['insert']
copy