题目描述
代码解决
class Solution {
public:
bool canConstruct(string ransomNote, string magazine)
{
// 创建一个大小为26的整数数组,用于存储每个字母在magazine中的出现次数
int hash[26] = {0};
// 遍历magazine,将每个字母的出现次数记录在hash数组中
for (int j = 0; j < magazine.length(); j++)
{
hash[magazine[j] - 'a']++;
}
// 遍历ransomNote,检查每个字母是否在magazine中有足够的次数
for (int i = 0; i < ransomNote.length(); i++)
{
hash[ransomNote[i] - 'a']--;
// 如果某个字母的计数小于0,说明magazine中该字母不够用
if (hash[ransomNote[i] - 'a'] < 0)
{
return false;
}
}
// 如果所有字母计数都满足条件,返回true
return true;
}
};
- 创建一个大小为26的整数数组
hash
,用于记录magazine
中每个字母的出现次数。 - 遍历
magazine
字符串,更新hash
数组中的对应计数。 - 遍历
ransomNote
字符串,检查hash
数组中的计数是否满足要求。如果hash
中的某个字母计数小于0,则返回false
。 - 如果遍历完
ransomNote
中的所有字母都没有出现计数小于0的情况,则返回true
。
这样,通过这种方式,代码能够高效地检查是否可以使用 magazine
中的字符构造出 ransomNote
。