383. Ransom Note

Given an arbitrary ransom note string and another string containing letters from all the magazines, write a function that will return true if the ransom note can be constructed from the magazines ; otherwise, it will return false.

Each letter in the magazine string can only be used once in your ransom note.

Note:
You may assume that both strings contain only lowercase letters.

canConstruct("a", "b") -> false
canConstruct("aa", "ab") -> false
canConstruct("aa", "aab") -> true

题目含义:判断给定字符串能否由另一字符串中字符组合生成
 1     public boolean canConstruct(String ransomNote, String magazine) {
 2         Map<Character,Integer> letterMap = new HashMap<>();
 3         for (Character c:magazine.toCharArray())
 4         {
 5             letterMap.put(c,letterMap.getOrDefault(c,0)+1);
 6         }
 7         
 8         for (Character c:ransomNote.toCharArray())
 9         {
10             int count = letterMap.getOrDefault(c,0);
11             if (count<=0) return false;
12             letterMap.put(c,--count);
13         }
14         return true;        
15     }

 

posted @ 2017-10-17 09:58  daniel456  阅读(109)  评论(0编辑  收藏  举报