gpt4 book ai didi

java - 破解面试19.8-创建哈希表时,当我在 if-else 语句中添加 else 时,为什么会得到错误的输出

转载 作者:行者123 更新时间:2023-12-01 23:34:09 25 4
gpt4 key购买 nike

破解面试中19.8的问题是:设计一种方法来查找任意给定单词在书中出现的频率。

书中提供的解决方案如下所示,除了我在 createHashtable 函数中添加了 else 之外。

我不知道为什么当我输入时会得到错误的输出(输出是:1, 0, 0,应该是2, 1, 1) if 后面的 else 语句。

import java.util.Hashtable;

public class Question198
{
/*create a hashtable for the strings in the book*/
public static Hashtable<String, Integer> createHashtable(String[] book) {
Hashtable<String, Integer> table = new Hashtable<String, Integer>();
for(int i = 0; i < book.length; i++) {
book[i] = book[i].toLowerCase();
if(book[i].trim() != " ") {
if( !table.containsKey(book[i])) {
table.put(book[i], 0);
}
else{ // ?? why else is here is wrong??
table.put(book[i], table.get(book[i]) + 1);
}
}
}
return table;
}
/*get the frequency of the given word in the book*/
public static int getFrequency(Hashtable<String, Integer> table, String word) {
if( table == null || word == null) return -1;
word = word.toLowerCase();
if( table.containsKey(word)) {
return table.get(word);
}
return 0;
}

/*Test*/
public static void main(String[] args) {
String[] book1 = {"This", "is", "a", "is", "case",};
Hashtable<String, Integer> test1 = createHashtable(book1);
String word1 = "is";
String word2 = "a";
String word3 = "case";
System.out.println("Expected(2): " + getFrequency(test1, word1));
System.out.println("Expected(1): " + getFrequency(test1, word2));
System.out.println("Expected(1): " + getFrequency(test1, word3));
}

}

最佳答案

您不需要输入 1 个初始出现的位置吗?

table.put(book[i], 1);

在代码中

if( !table.containsKey(book[i])) {
table.put(book[i], 0);
}

是的,trim() 在任何情况下都不会为您留下 ""

关于java - 破解面试19.8-创建哈希表时,当我在 if-else 语句中添加 else 时,为什么会得到错误的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18949198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com