单词距离
有个内含单词的超大文本文件,给定任意两个不同的单词,找出在这个文件中这两个单词的最短距离(相隔单词数)。如果寻找过程在这个文件中会重复多次,而每次寻找的单词不同,你能对此优化吗?
示例:
输入:words = [“I”,“am”,“a”,“student”,“from”,“a”,“university”,“in”,“a”,“city”], word1 = “a”, word2 = “student”
输出:1
解:
class Solution {
public:
int findClosest(vector<string>& words, string word1, string word2) {
int n = words.size();
int start = 0;
int distance = 0;
int res = n;
string temp = "";
for (int i = 0; i < n; ++i)
{
if (words[i] == word1 || words[i] == word2)
{
if (temp == "")
{
//记录第一个要寻找的单词
temp = words[i];
}
else if(temp != words[i])
{
//如果新寻找的单词和之前记录的上一个单词不一致,计算距离,更新temp
distance = i - start;
res = min(res, distance);
temp = words[i];
}
//如果新寻找的单词和之前记录的上一个单词一致,更新位置
start = i;
}
}
return res;
}
};