-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathcanConstruct.go
More file actions
32 lines (26 loc) · 861 Bytes
/
Copy pathcanConstruct.go
File metadata and controls
32 lines (26 loc) · 861 Bytes
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
/* https://leetcode.com/problems/ransom-note/#/description
Given an arbitrary ransom note string and another string containing letters from all the magazines,
write a functioransom-noten that will return true if the ransom note can be constructed from the magazines ;
otherwise, it will return false.
Each letter in the magazine string can only be used once in your ransom note.
Note:
You may assume that both strings contain only lowercase letters.
canConstruct("a", "b") -> false
canConstruct("aa", "ab") -> false
canConstruct("aa", "aab") -> true
*/
package lstring
func canConstruct(ransomNote string, magazine string) bool {
maps := make([]int, 26)
for _, r := range magazine {
maps[r-'a'] += 1
}
for _, r := range ransomNote {
if v := maps[r-'a']; v > 0 {
maps[r-'a'] -= 1
} else {
return false
}
}
return true
}