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.
一个指针指向word1上次出现的位置,一个指针指向word2上次出现的位置。因为两个单词如果比较接近的话,肯定是相邻的word1和word2的位置之差,所以我们只要每次得到一个新位置和另一个单词的位置比较一下就行了。
public class Solution {
public int shortestDistance(String[] words, String word1, String word2) {
if(words == null || words.length == 0){
return 0;
}
int index1 = -1;
int index2 = -1;
int res = Integer.MAX_VALUE;
for(int i=0; i<words.length; i++){
if(words[i].equals(word1)){
index1 = i;
}
if(words[i].equals(word2)){
index2 = i;
}
if(index1 != -1 && index2 != -1){
res = Math.min(res, Math.abs(index1 - index2));
}
}
return res;
}
}
遍历一遍数组,存下出现的index,求最小值即可。