文章目录
leetcode 383:赎金信 (python)
思路
这里采取了哈希表的方法,题目要求判断 ransomNote 能不能由 magazine 里面的字符构成, 且magazine 中的每个字符只能在 ransomNote 中使用一次。
那我们可以使用Counter分别记录ransomNote 和magazine 中的字符出现次数,由于randomNote要由magazine中的字符构成,那么randomNote的Counter必然要 含于magazine的Counter,我们求出magazine和ransomNote的Counter之间的差值,再拿magazine的Counter减去这个差值,看最后得到的结果是否等于ransomNote的Counter,如果是,则返回True,否则返回False。
代码如下:
class Solution:
def canConstruct(self, ransomNote: str, magazine: str) -> bool:
count1 = Counter(ransomNote)
count2 = Counter(magazine)
diff = count2 - count1
return True if count2-diff == count1 else False