-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path383. 赎金信.js
98 lines (82 loc) · 2.42 KB
/
383. 赎金信.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
// 383. 赎金信
// 简单
// 554
// 相关企业
// 给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。
// 如果可以,返回 true ;否则返回 false 。
// magazine 中的每个字符只能在 ransomNote 中使用一次。
// 示例 1:
// 输入:ransomNote = "a", magazine = "b"
// 输出:false
// 示例 2:
// 输入:ransomNote = "aa", magazine = "ab"
// 输出:false
// 示例 3:
// 输入:ransomNote = "aa", magazine = "aab"
// 输出:true
// 提示:
// 1 <= ransomNote.length, magazine.length <= 105
// ransomNote 和 magazine 由小写英文字母组成
/**
* @param {string} ransomNote
* @param {string} magazine
* @return {boolean}
*/
var canConstruct = function(ransomNote, magazine) {
/**
* 统计ransomNote中的每个字符的个数,判断magazin中相应地字符个数
* 如果ransomNote中有的字符,magazine中没有则返回false,或者ransomNote中的字符个数大于magazine中的字符个数返回false
* 否则返回true
*/
const ransomNoteObj = {}
const magazineObj = {}
for (let i = 0; i < ransomNote.length; i++) {
if (!ransomNoteObj[ransomNote[i]]) {
ransomNoteObj[ransomNote[i]] = 1
continue;
}
ransomNoteObj[ransomNote[i]]++
}
for (let i = 0; i < magazine.length; i++) {
if (!magazineObj[magazine[i]]) {
magazineObj[magazine[i]] = 1
continue;
}
magazineObj[magazine[i]]++
}
for (const key in ransomNoteObj) {
if (!magazineObj[key]) {
return false
}
if (ransomNoteObj[key] > magazineObj[key]) {
return false
}
}
return true
};
var canConstruct1 = function(ransomNote, magazine) {
/**
* 统计magazine中的每个字符的出现的次数存在字典中,键为字符,键值为字符出现的次数
* 循环ransomNote,对字典中的键值做减法,如果键值小于0或者不存在则返回false,否则返回true
*/
const dic = {}
for (let i = 0; i < magazine.length; i++) {
if (!dic[magazine[i]]) {
dic[magazine[i]] = 1
continue;
}
dic[magazine[i]]++
}
for (let i = 0; i < ransomNote.length; i++) {
// 书写顺序一定不能乱
if (dic[ransomNote[i]] === undefined) {
return false
}
dic[ransomNote[i]]--
if (dic[ransomNote[i]] < 0) {
return false
}
}
return true
};
console.log('canConstruct1', canConstruct1('aa', 'aab'))