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()
每天一点点,
外服停用,正在搬家