LC 383. 赎金信

383. 赎金信

难度 简单

题目大意:

  • 给定两个字符串ransomNotemagazine判断magazine里面的字符能不能构成magazine,如果可以就返回true否则就返回false

提示:

  • 1 <= ransomNote.length, magazine.length <= 105
  • ransomNotemagazine 由小写英文字母组成

示例 3:

输入:ransomNote = "aa", magazine = "aab"
输出:true

哈希表记数

将magzine的所有字符记录在一个数组中,再枚举ransomNote的每个字符,每次减去当前字符,如果数组中当前字符小于0那么表示magazine中的该字符使不够的,那么就直接返回了

代码实现

`class Solution {
public:
    bool canConstruct(string ransomNote, string magazine) {
        if (ransomNote.size() > magazine.size()) return false;
        vector<int> cnt(26);
        for (int i = 0; i < magazine.size(); i ++) {
            ++ cnt[magazine[i] - 'a'];
        }
        for (int i = 0; i < ransomNote.size(); i ++) {
            if (--cnt[ransomNote[i] - 'a'] < 0) 
                return false;
        }
        return true;
    }
};

时间复杂度 O ( n ) O(n) O(n)

结束了

你可能感兴趣的:(leetcode,算法,c++,面试,学习)