码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode赎金信、杂志问题

时间:2018-07-22 20:08:04      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:使用   假设   tco   leetcode   nta   toc   ret   需要   第一个字符   

给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串ransom能不能由第二个字符串magazines里面的字符构成。如果可以构成,返回 true ;否则返回 false。

(题目说明:为了不暴露赎金信字迹,要从杂志上搜索各个需要的字母,组成单词来表达意思。)

注意:

你可以假设两个字符串均只含有小写字母。

canConstruct("a", "b") -> false
canConstruct("aa", "ab") -> false
canConstruct("aa", "aab") -> true
分析:
利用HashMap这个集合,new的时候使用两个泛型,key为字符型(Character),value为整数型(Integer),通过存储magazine中的字母和出现的次数,和ransom中的字符进行比较,如果没有则直接返回false,否则减value值。

class Solution {
    public boolean canConstruct(String ransomNote, String magazine) {
        char[] c = ransomNote.toCharArray();
        char[] c1 = magazine.toCharArray();
        HashMap<Character,Integer> hm = new HashMap<>();

        for(Character character : c1) {
            if(!hm.containsKey(character)) {
                hm.put(character, 1);
            }else {
                hm.put(character, hm.get(character)+1);
            }
        }
        for(Character character : c) {
            if(!(hm.containsKey(character))){
                return false;
            }else {
                if((hm.get(character) -1) < 0) {
                    return false;
                }
                hm.put(character, hm.get(character)-1);
            }
        }

        return true;

    }
}

LeetCode赎金信、杂志问题

标签:使用   假设   tco   leetcode   nta   toc   ret   需要   第一个字符   

原文地址:http://blog.51cto.com/13845370/2148704

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!