forked from DengWangBao/Leetcode-Java
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ShortestWordDistanceII.java
34 lines (30 loc) · 1.02 KB
/
ShortestWordDistanceII.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
public class ShortestWordDistanceII {
private Map<String, List<Integer>> map;
public ShortestWordDistanceII(String[] words) {
map = new HashMap<String, List<Integer>>();
for (int i = 0; i < words.length; i++) {
List<Integer> list = map.computeIfAbsent(words[i], k -> new LinkedList<>());
list.add(i);
}
}
public int shortest(String word1, String word2) {
List<Integer> list1 = map.get(word1);
List<Integer> list2 = map.get(word2);
int ret = Integer.MAX_VALUE;
for (int i = 0, j = 0; i < list1.size() && j < list2.size(); ) {
int index1 = list1.get(i), index2 = list2.get(j);
if (index1 < index2) {
ret = Math.min(ret, index2 - index1);
i++;
} else {
ret = Math.min(ret, index1 - index2);
j++;
}
}
return ret;
}
}