Shortest Word Distance II
2016-07-24 02:50
344 查看
This is a follow up of Shortest Word Distance. The only difference is now you are given the list of words and your method will be calledrepeatedly many times with different parameters. How would you optimize it?
Design a class which receives a list of words in the constructor, and implements a method that takes two words word1 and word2 and return the shortest distance between these two words in the list.
For example,
Assume that words =
Given word1 =
Given word1 =
Note:
You may assume that word1 does not equal to word2, and word1 and word2 are both in the list.
Show Company Tags
Show Tags
Show Similar Problems
Design a class which receives a list of words in the constructor, and implements a method that takes two words word1 and word2 and 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.
Show Company Tags
Show Tags
Show Similar Problems
public class WordDistance { public Map <String, List<Integer>> map; public WordDistance(String[] words) { map = new HashMap<String, List<Integer>>(); for(int i=0;i<words.length;i++) { String str = words[i]; if(!map.containsKey(str)) { map.put(str,new ArrayList<Integer>()); } map.get(str).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; } } // Your WordDistance object will be instantiated and called as such: // WordDistance wordDistance = new WordDistance(words); // wordDistance.shortest("word1", "word2"); // wordDistance.shortest("anotherWord1", "anotherWord2");
相关文章推荐
- Shortest Word Distance
- 某资金盘程序的密码解密脚本
- unity 打包Android 出现花屏
- House Robber III
- House Robber II
- House Robber
- 晨魅--初学Linux系统
- 深入理解java反射机制
- FastDFS Tracker-Leader选择
- Windows/Linux服务器/Git/svn/get和post
- 三大原理(计算机原理、操作系统原理、编译原理)两个协议(TCP与HTTP协议)一种结构(数据结构)
- BZOJ3257 : 树的难题
- [React Native] State and Touch Events -- TextInput, TouchableHighLight
- C++ exception类
- Bellovin
- Shader,想说爱你不容易。
- 现在看看自己写的博客,怎么感觉好low啊。。。
- 逐步深入TCP/IP协议栈
- 平台化项目多语言架构实现
- asp.net显示用户信息