【发布时间】:2016-01-23 16:22:55
【问题描述】:
我需要创建一个方法来确定我尝试添加到我的 String[] 字典中的单词是否已经被添加。我们不允许在这个项目中使用 ArrayList,只能使用数组。
我是从这个开始的
public static boolean dictHasWord(String str){
for(int i = 0; i < dictionary.length; i++){
if(str.equals(dictionary[i])){
return true;
}
}
return false;
}
但是,我的教授告诉我不要使用这个,因为它是一个线性函数 O(n),并且无效。我还有什么办法可以解决这个问题?
【问题讨论】:
-
你可以使用 Arrays 类吗? docs.oracle.com/javase/7/docs/api/java/util/Arrays.html
-
您了解了哪些数据结构可能允许您使用?有几个显而易见的答案,但如果它们涉及到你一直在学习的数据结构,那么这是一个测试,以确保你已经学会了它,我很犹豫给你答案;如果您还没有了解它们,那么期望您自己弄清楚它们就太过分了。如果不知道真正的限制和上下文的其余部分,很难回答这样的问题。
-
我们只能使用字符串数组来创建字典。没有 ArrayList 或类似的东西。唯一的其他限制是我们不能调用 Arrays.sort() 或 Arrays.binarySearch()。
-
我们正在从 3 个包含完整书籍的单独文本文件中读取单词,然后创建一个 String[] 字典,我们最终将对其进行排序并放入它自己的文件 dictionary.txt。我们的字典中不能两次添加同一个单词,单词的长度必须> 1,并且单词不能以大写字母开头。我只需要使这种方法更有效地工作。它与我以前拥有的东西一起工作。
-
根据连续字符搜索单词。您只需将第一个字母开头的字典条目作为新词进行比较。这大大减少了搜索/比较时间。
标签: java arrays string dictionary