-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path383.ransom-note.rb
More file actions
48 lines (38 loc) · 1017 Bytes
/
383.ransom-note.rb
File metadata and controls
48 lines (38 loc) · 1017 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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# https://leetcode.com/problems/ransom-note/
# Test cases:
# ransomNote = "a", magazine = "b"
# ransomNote = "aa", magazine = "ab"
# ransomNote = "aa", magazine = "aab"
# ransomNote = "ea", magazine = "abcdef"
# Expected results:
# false
# false
# true
# true
# @param {String} ransom_note
# @param {String} magazine
# @return {Boolean}
# Dictionary solution
def can_construct(ransom_note, magazine)
magazine = magazine.chars.tally
ransom_note = ransom_note.chars.tally
ransom_note.all? do |k, v|
return false unless magazine[k]
magazine[k] >= v
end
end
# Array of chars exclusion solution
def can_construct(ransom_note, magazine)
magazine = magazine.chars
ransom_note = ransom_note.chars
ransom_note.all? do |element|
index = magazine.index(element)
magazine.delete_at(index) if index
end
end
# Chars count solution
def can_construct(ransom_note, magazine)
ransom_note.chars.uniq.all? do |character|
ransom_note.count(character) <= magazine.count(character)
end
end