【LeetCode383】赎金信(C++)

题目传送门:383. 赎金信 - 力扣(LeetCode)

题解

给定两个字符串a和b,请问字符串a能否完全用b中的字符构成。

我们需要统计两个字符串中每个字符出现的次数,并确保对于任意一个字符,其在b中的个数都要大于等于a中的个数。

采用两个桶数组记录字符个数,先统计b数组,然后在统计a数组时,如果发现当前字符已经比b中该字符更多,那么直接返回false。

如果a中所有字符都统计完仍没有问题,则返回true。

参考代码
class Solution {
public:
    bool canConstruct(string ransomNote, string magazine) {
        int tong1[30]={0},tong2[30]={0};
        for(int i=0;i<magazine.length();i++)
            tong1[magazine[i]-'a'+1]++;
        for(int i=0;i<ransomNote.length();i++)
        {
            tong2[ransomNote[i]-'a'+1]++;
            if(tong2[ransomNote[i]-'a'+1]>tong1[ransomNote[i]-'a'+1])
                return 0;
        }
        return 1;
    }
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值