Fork me on GitHub

Shortest Word Distance

Description

Given a list of words and two words word1 and word2, return the shortest distance between these two words in the list.

Example:
Assume that words = ["practice", "makes", "perfect", "coding", "makes"].

1
2
3
4
Input: word1 = “coding”, word2 = “practice”
Output: 3
Input: word1 = "makes", word2 = "coding"
Output: 1

Note:
You may assume that word1 does not equal to word2, and word1 and word2 are both in the list.

Solution

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Solution {
public:
int shortestDistance(vector<string>& words, string word1, string word2) {
int p1 = -1;
int p2 = -1;
int ret = INT_MAX;
for (int i = 0; i < words.size(); ++i) {
if(words[i] != word1 && words[i] != word2) continue;
if(words[i] == word1) p1 = i;
if(words[i] == word2) p2 = i;
if (p1 != -1 && p2 != -1) ret = min(ret, abs(p1 - p2));
}
return ret;
}
};