为了账号安全,请及时绑定邮箱和手机立即绑定

LeetCode赎金信、杂志问题

标签:
Java

    给定一个赎金信 (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;    }}

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消