RansomNote
勒索信
从杂志中选取字符,作为勒索信的内容,判断勒索信字符串的内容是否都能从杂志字符串中获取?
bool canConstruct(char* ransomNote, char* magazine)
思路:
字符串问题。该题目与字符串顺序无关,是字符个数统计。
26个英文字母数组统计。判断ransom中的个数是否大于mag中的个数。
此外,还要学习下子字符串组的KMP算法。一直都不是很会。。。
bool canConstruct(char* ransomNote, char* magazine) {
if(ransomNode == null || magazine == null)
{
return false;
}
//count ransom note letters a~z
int ransomSum[26] = {0};
int magSum[26] = {0};
int pos;
while(*ransomNode != '\0')
{
pos = *ransomNode - 'a';
ransomSum[pos]++;
ransomNode++;
}
while(*magazine != '\0')
{
pos = *magazine - 'a';
magSum[pos]++;
magazine++;
}
for(int i = 0; i < 26; i++)
{
if(ransomSum[i] > magSum[i])
return false;
}
return true;
}