1 回答
TA贡献1789条经验 获得超10个赞
您的地图应该将单词作为键,将它们的计数作为值。按单词在输入中的位置映射单词并不能帮助您找到它们。
Mapa (也称为)的全部要点Dictionary是能够通过给定键快速查找值。在这种情况下,HashMap操作是 O(1),而通过迭代所有条目值(如您的情况)来查找值要慢得多 -> O(n)。我强烈建议您阅读有关地图和集合的内容。
这是一个正确的解决方案:
public class HackerRank {
public static void main(String[] args) {
final Scanner in = new Scanner(System.in);
final int numberOfWordsInMagazine = in.nextInt();
final int numberOfWordsInNote = in.nextInt();
final Map<String, Integer> wordsInMagazine = new HashMap<>();
for (int i = 0; i < numberOfWordsInMagazine; i++) {
final String word = in.next();
wordsInMagazine.merge(word, 1, Integer::sum);
}
boolean canPrintMessage = true;
for (int i = 0; i < numberOfWordsInNote; i++) {
final String word = in.next();
Integer remainingCount = wordsInMagazine.computeIfPresent(word, (key, value) -> value - 1);
if (null == remainingCount || remainingCount < 0) {
canPrintMessage = false;
break;
}
}
System.out.println(canPrintMessage ? "Yes" : "No");
}
}
添加回答
举报