Bootstrap

算法题(92):数组中两个字符串的最小距离

审题:

本题需要我们根据字符串数组strs的内容,查找str1和str2的最小距离

思路:

方法一:双指针

我们可以利用pos1负责指向str1的位置,pos2负责指向str2的位置,且由于str1与str2在strs中不是唯一的数据,所以我们在遍历的过程中还需要不断更新两个指针,以搜索出所有可能的最小距离。

解题:
(1)变量创建与初始化

由于数据最大可能是1e5,所以我们先创建一个一定满足容量的字符串数组。

mindistance表示最短距离,初始设置为1e6是因为两个字符串最大距离只有可能是1e5,若后续没有更新mindistance还可以用它作为判断是否str1和str2都在strs中的条件

(2)部分数据录入

由于我们一开始的数组创建的容量过大了,所以这里我们为了减少空间浪费把数据量缩小回来。

特殊处理:题目中说如果str1与str2有任意一个为空就要打印-1,然后结束程序

(3)核心代码

疑问:为什么我们可以直接更新pos1和pos2?这样不会导致漏情况吗?

不会,因为我们保证了每次进行距离计算都是局部的最短距离计算,而我们又对整个数组都进行了遍历更新,所以局部最短就可以升为全局最短

特殊处理:如果mindistance没有更新过,说明数组中有一个字符串是不存在的,输出-1并退出程序


补充:abs表示参数的绝对值

使用方式:abs(value)

头文件:cstdlib

数组中两个字符串的最小距离_牛客题霸_牛客网

 

;