面试题 17.11. 单词距离

面试题 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;
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_43599304/article/details/121467907