将一个字符串变为另一个字符串最小操作次数,您对单词允许以下3种操作:
a)插入字符
b)删除字符
c)替换字符
例如 a = ‘horse’ 变成 b = ‘ros’
想法:
# -*- coding:utf-8 -*-
def char_array_replace(array1, array2):
row = len(array1)
col = len(array2)
if row*col == 0:
return row+col
d = [[0]*(col+1) for _ in range(row+1)]
print d
#首先考虑极端情况
# array2是空字符串,要对array1进行全部删除操作
for i in range(row+1):
d[i][0] = i
# array1是空字符串,要根据array2进行全部插入操作
for j in range(col+1):
d[0][j] = j
# 如果是从前一步变过来的的,说明前一步之前的序列已经一致
# 注意,不是从0 开始
for i in range(1,row+1):
for j in range(1,col+1):
if array1[i-1] == array2[j-1]:
d[i][j] = d[i-1][j-1]
else:
delete = d[i-1][j] + 1
replace = d[i-1][j-1] + 1
insert = d[i][j-1]+1
d[i][j] = min(delete, replace, insert)
print d[i-1][j-1]
def main():
char_array_replace('horse','ros')
if __name__ == "__main__":
main()