给你两个字符串:ransomNote
和 magazine
,判断 ransomNote
能不能由 magazine
里面的字符构成。
如果可以,返回 true
;否则返回 false
。
magazine
中的每个字符只能在 ransomNote
中使用一次。
这里的要求是用magazine中的字符来完成ransomNote的编写,这里可以先创造一个空的数组,遍历magazine中的字母,使字母对应的值进行加1的操作。然后就可以用这个数组对magazine里面字母出现的次数进行一个统计。然后再遍历ransomNote,同时进行减1操作,当发现其对应的值为0时说明不能构成,返回false,反之true。代码如下:
bool canConstruct(char* ransomNote, char* magazine) {
int table[26] = {0};
while(*magazine != '\0')
{
table[*magazine -97]++;
magazine++;
}
while(*ransomNote != '\0')
{
if(table[*ransomNote - 97] == 0)
return false;
else
table[*ransomNote - 97]--;
ransomNote++;
}
return true;
}