题目描述:
给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。
如果可以,返回 true ;否则返回 false 。
magazine 中的每个字符只能在 ransomNote 中使用一次。
一、解题思路
新建一个数组,我们需要判断 ransomNote
能不能由 magazine
里面的字符构成,那么在magazine中出现一个字母加一,在ransomNote出现一次减1,当这个数组某值都大于等于0时说明magazine可以满足ransomNote的需求
否则不能,返回false
二、代码
代码如下(示例):
bool canConstruct(char * ransomNote, char * magazine){
int i;
int ranlen=strlen(ransomNote);
int maglen=strlen(magazine);
int a[26]={0};//数组长度为小写字母个数
if(ranlen>magazine)
{
return false;
}
for(i=0;i<maglen;i++)
{
a[magazine[i]-'a']++;
}
for(i=0;i<ranlen;i++)
{
a[ransomNote[i]-'a']--;
if(a[ransomNote[i]-'a']<0)
{
return false;
}
}
return true;
}