哈罗德(Harold)是绑架者,曾写过赎金记录,但现在他担心这将通过笔迹追溯到他身上。他找到了一本杂志,想知道他是否可以从中删掉全部单词,并用它们来创建赎金记录的无法追踪的副本。他的笔记中的单词区分大小写,并且只能使用杂志中的整个单词。他不能使用子字符串或串联来创建他需要的单词。

给定杂志中的文字和赎金票据中的文字,如果他可以使用杂志中的全部文字准确地复制赎金票据,则打印“是”;否则,打印编号

例如,音符为“黎明袭击”。该杂志仅包含“黎明袭击”。该杂志的所有词语正确,但存在案件不匹配的情况。答案是 。

样本输入0

6 4
今天晚上给我一个盛大的礼物
今天给一个盛大的
样本输出0


样本输入1

6 5
三倍不是四倍
二乘二是四
样本输出1

没有

我的代码5/22测试用例失败:(

我不知道为什么5失败了。

static void checkMagazine(String[] magazine, String[] note) {

    int flag = 1;
    Map<String, Integer> wordMap = new HashMap<>();
    for(String word: magazine) {
        if(!wordMap.containsKey(word)) {
            wordMap.put(word, 1);
        } else
            wordMap.put(word,wordMap.get(word)+1);
    }
    for(String word: note){
        if(!wordMap.containsKey(word)){
            flag = 0;
            break;
        }
            else wordMap.remove(word, wordMap.get(word));
    }

    if(flag == 0)
        System.out.println("No");
    else
      System.out.println("Yes");
}

最佳答案

可能是因为您没有删除杂志中单词的数量,而是完全删除了该单词的所有数量。试试这个:

for(String word: note){
    if(!(wordMap.containsKey(word) && wordMap.get(word) > 0)){
        flag = 0;
        break;
    }
    else wordMap.put(word, wordMap.get(word)-1);
}

10-08 08:03