哈罗德(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);
}