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");
}
}
添加回答
舉報