Python 算法 实现两个字符串的最小距离



普通解法

lis_a = ["*","3","*","5","10","9","7","1","*"]

def min_distance_1(strs, str1, str2):
if str1 not in strs or str2 not in strs:
return -1
if str1 == str2:
return 0
dist, min = 1, len(strs)
pos1, pos2 = 0, len(strs)
for i in xrange(0, len(strs)):
if str1 == strs[i]:
pos1 = i
for j in xrange(0, len(strs)):
if str2 == strs[j]:
pos2 = j
dist = abs(pos1 - pos2)
if dist < min:
min = dist
return min

np 解法

- 重点是二维数组构建

1
import numpy as np 2 def min_distance_2(strs, str1, str2): 3 arr_1 = np.array([[i for i in range(len(strs)) if strs[i] == str1]]) 4 arr_2 = np.array([[i for i in range(len(strs)) if strs[i] == str2]]) 5 return abs(arr_1-arr_2.T).min()

 

posted @ 2020-11-17 10:16  iotwolves  阅读(275)  评论(0)    收藏  举报