方法1:
class Solution {
public:
bool canConstruct(string ransomNote, string magazine) {
int alp[30],alpc[30];
memset(alp,0,sizeof(alp));
memset(alpc,0,sizeof(alpc));
for(int i=0;magazine[i]!='\0';i++)
{
char c=magazine[i];
if(c>='a'&&c<='z')
alp[c-'a']++;
else if(c>='A'&&c<='Z')
alpc[c-'A']++;
}
for(int i=0;ransomNote[i]!='\0';i++)
{
char c=ransomNote[i];
if(c>='a'&&c<='z')
{
alp[c-'a']--;
if(alp[c-'a']<0)
return false;
}
else if(c>='A'&&c<='Z')
{
alpc[c-'A']--;
if(alpc[c-'A']<0)
return false;
}
}
return true;
}
};方法2:
class Solution {
public:
bool canConstruct(string ransomNote, string magazine) {
int alp[256]={0};
for(int i=0;magazine[i]!='\0';i++)
alp[magazine[i]]++;
for(int i=0;ransomNote[i]!='\0';i++)
if(--alp[ransomNote[i]]<0)return false;
return true;
}
};
本文介绍两种方法来判断一个字符串(ransomNote)是否可以通过另一个字符串(magazine)中的字符重新排列形成。通过使用C++实现,第一种方法分别统计大小写字母出现次数,第二种方法则直接统计所有ASCII字符的出现次数。
473

被折叠的 条评论
为什么被折叠?



