LeetCode #383: Ransom Note
β’ 194 words β’ 1 min β’ updated
So elegant!
python
from collections import Counter
class Solution:
def canConstruct(self, ransomNote: str, magazine: str) -> bool:
return Counter(ransomNote) <= Counter(magazine)A bit more manual:
python
from collections import Counter
class Solution:
def canConstruct(self, ransomNote: str, magazine: str) -> bool:
c = Counter(magazine)
for letter in ransomNote:
if c[letter] <= 0:
return False
c[letter] -= 1
return TrueNo Counter?
python
from collections import defaultdict
class Solution:
def canConstruct(self, ransomNote: str, magazine: str) -> bool:
c = defaultdict(int)
for letter in magazine:
c[letter] += 1
for letter in ransomNote:
if c[letter] <= 0:
return False
c[letter] -= 1
return TrueNo defaultdict?
python
class Solution:
def canConstruct(self, ransomNote: str, magazine: str) -> bool:
c = {}
for letter in magazine:
if letter in c:
c[letter] += 1
else:
c[letter] = 1
for letter in ransomNote:
if c.get(letter, 0) <= 0:
return False
c[letter] -= 1
return TrueOr with setdefault:
python
class Solution:
def canConstruct(self, ransomNote: str, magazine: str) -> bool:
c = {}
for letter in magazine:
c[letter] = c.setdefault(letter, 0) + 1
for letter in ransomNote:
if c.get(letter, 0) <= 0:
return False
c[letter] -= 1
return True