383. 赎金信
为了不在赎金信中暴露字迹,从杂志上搜索各个需要的字母,组成单词来表达意思。
给你一个赎金信 (ransomNote) 字符串和一个杂志(magazine)字符串,判断 ransomNote 能不能由 magazines 里面的字符构成。
如果可以构成,返回 true ;否则返回 false 。
magazine 中的每个字符只能在 ransomNote 中使用一次。
public class Solution { public bool CanConstruct(string ransomNote, string magazine) { if (ransomNote.Length > magazine.Length) { return false; } int[] cnt = new int[26]; foreach (char c in magazine) { cnt[c - 'a']++; } foreach (char c in ransomNote) { cnt[c - 'a']--; if (cnt[c - 'a'] < 0) { return false; } } return true; } }
判断杂志里面每个字母出现的次数都比赎金信来的大
这里两个迭代器
第一个迭代器统计的是杂志里面26个字母出现的次数
这里的c只是字母的意思,注意单引号
出现了,就计数
第二个迭代器统计的是赎金信里26个字母出现的次数
但是此时是要减去的,一旦出现了负值
就证明了赎金信里有字母杂志上没有
所以不符合条件