有个内含单词的超大文本文件,给定任意两个单词,找出在这个文件中这两个单词的最短距离(相隔单词数)。如果寻找过程在这个文件中会重复多次,而每次寻找的单词不同,你能对此优化吗?
示例:
输入:words = [“I”,“am”,“a”,“student”,“from”,“a”,“university”,“in”,“a”,“city”], word1 = “a”, word2 = “student”
输出:1
class Solution {
public int findClosest(String[] words, String word1, String word2) {
int min=Integer.MAX_VALUE;
List<Integer>list1=new ArrayList<>();
List<Integer>list2=new ArrayList<>();
for(int i=0;i<words.length;i++)
{
if(word1.equals(words[i]))
{
list1.add(i);
}
if(word2.equals(words[i]))
list2.add(i);
}
for(int j=0;j<list1.size();j++)
{
for(int k=0;k<list2.size();k++)
{
if(min>Math.abs(list1.get(j)-list2.get(k)))
min=Math.abs(list1.get(j)-list2.get(k));
}
}
return min;
}
}
总结,先找到两个String出现的位置,依次保存在两个list,然后再对两个list进行遍历,从而得到结果。