有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    原始代码(不一定是经过编辑的版本)的问题(从我所看到的)是负面结果的双重输出。如果勒索人不能做记录,你的代码会同时打印“否”和“是”您所需要做的就是在breakpoint标签后面添加一个大括号,然后在“Yes”打印行后面关闭它们。学习测试你的代码