244.最短单词距离II
方法:哈希表+双指针
class WordDistance {
HashMap<String,List<Integer>> map = new HashMap<>();
public WordDistance(String[] wordsDict) {
int len = wordsDict.length;
for(int i =0;i< len;i++){
String word = wordsDict[i];
if(!map.containsKey(word)){
map.put(word,new ArrayList<>());
}
map.get(word).add(i);
}
}
public int shortest(String word1, String word2) {
List<Integer> map1 = map.get(word1);
List<Integer> map2 = map.get(word2);
int size1 = map1.size(),size2 = map2.size();
int pos1 = 0,pos2 = 0;
int ans = Integer.MAX_VALUE;
while(pos1 < size1 && pos2 < size2){
int index1 = map1.get(pos1),index2 = map2.get(pos2);
ans = Math.min(ans,Math.abs(index1-index2));
if(index1 < index2){
pos1++;
}else{
pos2++;
}
}
return ans;
}
}
/**
* Your WordDistance object will be instantiated and called as such:
* WordDistance obj = new WordDistance(wordsDict);
* int param_1 = obj.shortest(word1,word2);
*/