leetCode Ransom Note

1、题目描述

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.

 

You may assume that both strings contain only lowercase letters.

 canConstruct("a", "b") -> false

canConstruct("aa", "ab") -> false

canConstruct("aa", "aab") -> true

 

输入两个string ,判断第二个string是否能构造出第一个字符。

2、问题分析

如果第一个string 中的每个 字符都可以在 第二个字符中找到,并且该字符在第一个string中的数量少于在第二个string中的数量,则第二的string可以构造出第一个string。

使用两个 map , ,map<char,int> 存储在每个string中对应的字符的出现次数。然后对比两个map 。

 

3、代码

 

 1  bool canConstruct(string ransomNote, string magazine) {
 2         
 3         map<char,int> mR;
 4         for(char &c : ransomNote)
 5            mR[c]++;
 6         
 7         map<char,int> mM;
 8         for(char &c : magazine)
 9             mM[c]++;
10         
11         for(auto it : mR )
12             if(it.second > mM[it.first])
13                 return false;
14         return true;
15         
16     }

 

转载于:https://www.cnblogs.com/wangxiaoyong/p/8665334.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值