[leetcode] 243. Shortest Word Distance解題レポート

1097 ワード

タイトルリンク:https://leetcode.com/problems/shortest-word-distance/
Given a list of words and two words word1 and word2, return the shortest distance between these two words in the list. For example, Assume that words = ["practice", "makes", "perfect", "coding", "makes"]. Given word1 = “coding”, word2 = “practice”, return 3. Given word1 = "makes", word2 = "coding", return 1. Note: You may assume that word1 does not equal to word2, and word1 and word2 are both in the list. 考え方:2つの単語が辞書に何度も現れる可能性があるので、hash tableで1つの単語の複数の位置を保存し、最小の距離を列挙することができます.コードは次のとおりです.
class Solution {
public:
    int shortestDistance(vector<string>& words, string word1, string word2) {
        unordered_map<string, vector<int>> mp;
        for(int i =0; i< words.size(); i++)
            mp[words[i]].push_back(i);
        int Min = INT_MAX;
        for(auto val1: mp[word1])
            for(auto val2: mp[word2])
                Min = min(Min, abs(val1 - val2));
        return Min;
    }
};