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.
遍历一遍,用两个List记录idx,最后互相配对打擂台出最小的就好。
class Solution { public int shortestDistance(String[] words, String word1, String word2) { List<Integer> idx1 = new ArrayList<>(); List<Integer> idx2 = new ArrayList<>(); for (int i = 0; i< words.length; i++) { if(word1.equals(words[i])) { idx1.add(i); } else if (word2.equals(words[i])){ idx2.add(i); } } int result = Integer.MAX_VALUE; for (int i = 0; i < idx1.size(); i++) { for (int j = 0; j < idx2.size(); j++) { result = Math.min(result, Math.abs(idx1.get(i) - idx2.get(j))); } } return result; } }