欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-02-27 23:25:39
...

题目

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

例子:strs = ['1','3','3','3','2','3','1'] , str1 = '1', str2 = '2' 返回2

基本思路

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

def minDistance(strs,str1,str2):

    import sys

    if str1 == None or str2 == None or strs == None:
        return -1

    if str1 not in strs or str2 not in strs:
        return -1


    last1 = -1
    last2 = -1
    minDistance = sys.maxsize

    for i in range(len(strs)):
        if strs[i] == str1:
            if last2 != -1:
                minDistance = min(minDistance,i-last2)
            last1 = i

        if strs[i] == str2:
            if last1 != -1:
                minDistance = min(minDistance,i-last1)
            last2 = i

    return minDistance if minDistance == sys.maxsize else -1