面试题 17.11. 单词距离
有个内含单词的超大文本文件,给定任意两个单词,找出在这个文件中这两个单词的最短距离(相隔单词数)。如果寻找过程在这个文件中会重复多次,而每次寻找的单词不同,你能对此优化吗?
示例:
输入: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) {
vector<int> a, b;
for(int i = 0; i < words.size(); ++i){
if(words[i] == word1){
a.push_back(i);
}
if(words[i] == word2){
b.push_back(i);
}
}
int min_len = INT_MAX;
for(int i = 0; i < a.size(); ++i){
for(int j = 0; j < b.size(); ++j){
min_len = min(min_len, abs(a[i] - b[j]));
}
}
return min_len;
}
};