题目传送门: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;
}
};