java如何通过HashTable Hakerak赋值中的所有测试?
我不明白为什么使用我的Hash Tables: Ransom Note HakerRank challenge解决方案只能通过8/17测试用例
代码:
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class Solution {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int m = in.nextInt();
int n = in.nextInt();
HashMap<String, Integer> magazine = new HashMap<String, Integer>();
for(int magazine_i=0; magazine_i < m; magazine_i++){
String word = in.next();
Integer wordCounter = magazine.get(word);
if(wordCounter != null){
magazine.put(word, ++wordCounter);
}else{
magazine.put(word, 1);
}
}
HashMap<String, Integer> ransom = new HashMap<String, Integer>();
for(int ransom_i=0; ransom_i < n; ransom_i++){
String word = in.next();
Integer wordCounter = ransom.get(word);
if(wordCounter != null){
ransom.put(word, ++wordCounter);
}else{
ransom.put(word, 1);
}
}
boolean ok = true;
breakpoint:
for(Map.Entry<String, Integer> ransomEntry: ransom.entrySet()){
if(magazine.get(ransomEntry.getKey()) != null){
if(magazine.get(ransomEntry.getKey()) < ransomEntry.getValue()){
ok = false;
break breakpoint;
}
}else{
ok = false;
break breakpoint;
}
}
if(ok){
System.out.println("Yes");
}
}
}
# 1 楼答案
原始代码(不一定是经过编辑的版本)的问题(从我所看到的)是负面结果的双重输出。如果勒索人不能做记录,你的代码会同时打印“否”和“是”您所需要做的就是在
breakpoint
标签后面添加一个大括号,然后在“Yes”打印行后面关闭它们。学习测试你的代码