力扣赎金信

1.题目的描述示例:

给你两个字符串:ransomNote和magazine,判断ransomNVote能不

能由magazine里面的字符构成。

如果可以,返回true;否则返回false。

magazine中的每个字符只能在ransomNote使用一次。c2efd4f42dbf49f3ad95111fc8fa90fa.jpg

 2.思路:看到这道题我的第一反应是哈希表,就是用哈希表存储次数,然后用次数做对比,不一样的就直接false

3.代码:bool canConstruct(char * ransomNote, char * magazine)

{

int  hash1[26]={0};

int hash2[26]={0};

int r2=strlen(ransomNote);

int m2=strlen(magazine);

int i=0;

for(i=0;i<m2;i++)

{

    hash2[magazine[i]-'a']++;

}

for(i=0;i<r2;i++)

{

    hash1[ransomNote[i]-'a']++;

}

for(i=0;i<26;i++)

{

    if(hash1[i]!=0&&hash1[i]>hash2[i])

    {

        return false;

    }

}

return true;

}

4.时间复杂度:O(m+n+k),m和n为字符串的长度,最多比较k=26次

  空间复杂度:O(k+k),开辟了两个数组,k为26

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值