LeetCode 383. Ransom Note
class Solution:
def canConstruct(self, ransomNote: str, magazine: str) -> bool:
if len(ransomNote) > len(magazine):
return False
dic = dict()
for elm in magazine:
if elm not in dic.keys():
dic[elm] = 1
else:
dic[elm] += 1
for elm in ransomNote:
if elm not in dic.keys():
return False
else:
dic[elm] -= 1
if dic[elm] < 0:
return False
return True
magazineの要素をkey、出現回数をvalueとして辞書dicに入れる。
ransomNoteの要素がdicにあれば、valueの値を1減らす。
0未満になったら、ransomNoteに出現する個数の方がmagazineの個数よりも多いという意味なのでFalseを返す
ransomNoteの要素がdicになければ、magazineにその要素は含まれないという意味なのでFalseを返す
elm not in dic.keys()
でelmがdicのkeyになければという意味。
Counterを使う方法もあるらしい