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);*/