383. Ransom Note
Read the full problem statement on LeetCode.
Difficulty: easy Acceptance: 64% Topics: Hash Table, String, Counting
View full problem on LeetCode Reading material
Reference solution (spoiler · python)
# Time: O(n)
# Space: O(1)
class Solution(object):
def canConstruct(self, ransomNote, magazine):
"""
:type ransomNote: str
:type magazine: str
:rtype: bool
"""
counts = [0] * 26
letters = 0
for c in ransomNote:
if counts[ord(c) - ord('a')] == 0:
letters += 1
counts[ord(c) - ord('a')] += 1
for c in magazine:
counts[ord(c) - ord('a')] -= 1
if counts[ord(c) - ord('a')] == 0:
letters -= 1
if letters == 0:
break
return letters == 0
# Time: O(n)
# Space: O(1)
import collections
class Solution2(object):
def canConstruct(self, ransomNote, magazine):
"""
:type ransomNote: str
:type magazine: str
:rtype: bool
"""
return not collections.Counter(ransomNote) - collections.Counter(magazine)
Solution from kamyu104/LeetCode-Solutions · MIT
Similar questions