题目与示例
题目
题目内容
有个内含单词的超大文本文件,给定任意两个不同的单词,找出在这个文件中这两个单词的最短距离(相隔单词数)。如果寻找过程在这个文件中会重复多次,而每次寻找的单词不同,你能对此优化吗?
来源:力扣(LeetCode)
示例 1:
输入:words = [“I”,“am”,“a”,“student”,“from”,“a”,“university”,“in”,“a”,“city”], word1 = “a”, word2 = “student”
输出:1
一、思路
由题意,我们要寻找两个目标单词之间的最短距离,我们只需要对这个vector进行遍历,分别记录两个目标单词各自的位置即可。
pos_1用来标识第一个目标单词的位置,pos_2用来标识第二个目标单词的位置,我们每向后移动一次,就对返回的值进行更新,直到完成遍历,这样就可以解决这个问题。
二、解题代码
解题代码如下:
class Solution {
public:
int findClosest(vector<string>& words, string word1, string word2) {
int res = words.size();
int pos_1 = -1, pos_2 = -1;
for(int i = 0; i < words.size(); i++) {
if(words[i] == word1) {
pos_1 = i;
}
else if(words[i] == word2) {
pos_2 = i;
}
if(pos_1 != -1 && pos_2 != -1){
res = min(res, abs(pos_1 - pos_2));
}
}
return res;
}
};
注:以上部分内容源自力扣,解题方法为个人想法,如有错误还请大家指正