This is my solution to challenge “Hash Tables: Ransom Note” on HackerRank. Click here to see the challenge.
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(); String magazine[] = new String[m]; for(int magazine_i=0; magazine_i < m; magazine_i++){ magazine[magazine_i] = in.next(); } String ransom[] = new String[n]; for(int ransom_i=0; ransom_i < n; ransom_i++){ ransom[ransom_i] = in.next(); } String output = isRansomPossible(magazine, ransom)?"Yes":"No"; System.out.println(output); } public static boolean isRansomPossible(String[] magazine, String[] ransom){ if(ransom.length > magazine.length){ return false; } HashMap<String,Integer> wordMap = new HashMap<String,Integer>(); for(String word:magazine){ if(wordMap.containsKey(word)){ int n = wordMap.get(word); wordMap.put(word,++n); }else{ wordMap.put(word,1); } } for(String word:ransom){ if(wordMap.containsKey(word) && wordMap.get(word) > 0){ int n = wordMap.get(word); n--; wordMap.put(word,n); }else{ return false; } } return true; } }