Given
an
arbitrary
ransom
note
string
and
another
string
containing
letters from
all
the
magazines,
write
a
function
that
will
return
true
if
the
ransom
note
can
be
constructed
from
the
magazines ;
otherwise,
it
will
return
false.
Each letter in the magazine string can only be used once in your ransom note.
Note:
You may assume that both strings contain only lowercase letters.
canConstruct("a", "b") -> false canConstruct("aa", "ab") -> false canConstruct("aa", "aab") -> true
简单来说就是判断右边的字符集合是否包含左边的字符集合。直接用数组计数来实现。
代码:
class Solution {
public:
bool canConstruct(string ransomNote, string magazine) {
int count[300];
memset(count,0,sizeof(count));
for(auto& x:magazine)
{
count[x]++;
}
for(auto& x:ransomNote)
{
if(count[x]>0)
{
count[x]--;
}
else
{
return false;
}
}
return true;
}
};