跳至正文

每日一题——383. 赎金信

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个字母出现的次数

但是此时是要减去的,一旦出现了负值

就证明了赎金信里有字母杂志上没有

所以不符合条件

发表评论

您的电子邮箱地址不会被公开。