Friday, February 12, 2016

243. Shortest Word Distance

Question:

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.

Solution(Array):

abs(idx1-idx2)

Code(C++):

class Solution {
public:
    int shortestDistance(vector& words, string word1, string word2) {
        int n = words.size();
        int idx1 = -1;
        int idx2 = -1;
        int dist = INT_MAX;
        for(int i=0;i<n;i++){
            if(words[i] == word1) idx1=i;
            else if(words[i] == word2) idx2=i;
            if(idx1 != -1 && idx2 != -1)
                dist = min(dist,abs(idx1-idx2));
        }
        return dist;
    }

};

No comments :

Post a Comment