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.
思路1:用idx1 来记录上次word1出现的index,idx2来记录上次word2出现的index,这样每次跟新index1,index2的时候都减去上次出现的值,因为扫描是从左往右一直扫描。那么这样每次更新就会得到最小值。 O(n).
class Solution {
public int shortestDistance(String[] wordsDict, String word1, String word2) {
int index1 = -1; int index2 = -1;
int res = Integer.MAX_VALUE;
for(int i = 0; i < wordsDict.length; i++) {
if(word1.equals(wordsDict[i])) {
index1 = i;
}
if(word2.equals(wordsDict[i])) {
index2 = i;
}
if(index1 != -1 && index2 != -1) {
res = Math.min(res, Math.abs(index1 - index2));
}
}
return res;
}
}