2017-01-02 6 views
-4

Hash Tables: Ransom Note HakerRank challengeの解を使って8/17テストケースだけが渡される理由はわかりません。HashTable HakerRankの割り当てですべてのテストに合格するには?

コード:

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"); 
     } 

    } 
} 
+0

まず、コードは常に終了します。はい。 –

+2

これは印刷されません。コードをテストしてみませんか? –

答えて

1

問題元のコード、必ずしも編集されたバージョンで(私が見ることができるものから)、陰性の結果をダブル出力されています。トランスランマーがメモを作成できない場合、コードは「いいえ」と「はい」の両方を出力します。あなたがする必要があったのは、breakpointラベルの後に中括弧を追加し、の後にの「Yes」という印字行を閉じてください。あなたのコードをテストする方法を学んでください。

関連する問題