字符串问题---数组中两个字符串的最小距离

来源:互联网 发布:淘宝皮草款式 编辑:程序博客网 时间:2024/05/21 16:50

【题目】

  给定一个字符串数组strs,再给定两个字符串str1和str2,返回strs中str1与str2的最小距离,如果str1或str2为null,或不在strs中,返回-1。

【基本思路】

  从左到右遍历strs,用变量last1记录最近一次出现的str1的位置,用变量last2记录最近一次出现str2的位置。如果遍历到str1,那么i - last2就是当前的str1和左边离它最近的str2之间的距离。如果遍历到str2,那么i - last1就是当前的str2和左边离它最近的str1之间的距离。用全局变量记录最小距离即可。

下面是使用python3.5实现的代码。

#数组中两个字符串的最小距离def minDistance(strs, str1, str2):    if strs == None or str1 == None or str2 == None:        return -1    if str1 == str2:        return 0    last1 = -1    last2 = -1    minDistance = sys.maxsize    for i in range(len(strs)):        if strs[i] == str1:            if last2 != -1:                dist = i - last2                minDistance = min(minDistance, dist)            last1 = i        if strs[i] == str2:            if last1 != -1:                dist = i - last1                minDistance = min(minDistance, dist)            last2 = i    return minDistance if minDistance != sys.maxsize else -1
原创粉丝点击