本文最后更新于:2023年3月19日 晚上
Lt383. 赎金信
给定一个赎金信 (ransom
) 字符串和一个杂志(magazine
)字符串,判断第一个字符串 ransom
能不能由第二个字符串 magazines
里面的字符构成。如果可以构成,返回 true
;否则返回 false
。
(题目说明:为了不暴露赎金信字迹,要从杂志上搜索各个需要的字母,组成单词来表达意思。杂志字符串中的每个字符只能在赎金信字符串中使用一次。)
示例 1:
1 2
| 输入:ransomNote = "a", magazine = "b" 输出:false
|
示例 2:
1 2
| 输入:ransomNote = "aa", magazine = "ab" 输出:false
|
示例 3:
1 2
| 输入:ransomNote = "aa", magazine = "aab" 输出:true
|
提示:
思路
哈希表分别记录出现个数,然后判断 ransomNoteMap 中每个字符 magazineMap 的个数都大于即可。
解答
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
var canConstruct = function (ransomNote, magazine) { const getMap = (str) => { const map = {}; for (const char of str.split("")) { if (map[char]) map[char]++; else map[char] = 1; } return map; }; const ransomNoteMap = getMap(ransomNote); const magazineMap = getMap(magazine); for (const [key, value] of Object.entries(ransomNoteMap)) { if (!magazineMap[key] || magazineMap[key] < value) return false; } return true; };
|