leetcode 383. Ransom Note 勒索信

题目大意:勒索信(嗯,你没看错,勒索信,有没有吓哭)

给一串任意的勒索信字符串和另一串字符串包含从杂志上剪下来的字母,要求你写一个函数来返回是否勒索信是否由该杂志中字母组成,不是的话返回失败。

每一个杂志中的字母在你的勒索信中只能用一次。

注:你可以假设字符串都只包含小写字母。


背景介绍(作者瞎说的):大概因为美国绑匪勒索信都是从杂志上剪字母下来拼接而成(手写勒索信的话,可能被认出笔记).......

思路分析:就是看字符串1的所有字母是否都在字符串2中。分析:因为题目只要求小写字母,于是......直接用两个大写为26(个小写字母)的数组记录两个字符串即可,看字符串1是否全都包含在字符串2中,即数组1是否每个元素都小于等于数组2。复杂度O(n),C++代码如下(可AC):

class Solution {
public:
    bool canConstruct(string ransomNote, string magazine) {
        int r[26]={0}, m[26]={0};
        for(int i=0;i<ransomNote.size();i++)
            r[ransomNote[i]-'a']++;
        for(int i=0;i<magazine.size();i++)
            m[magazine[i]-'a']++;
        for(int i=0;i<26;i++)
            if(m[i]-r[i]<0)
                return false;
        return true;
    }
};

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值