day07 代码随想录算法训练营 383. 赎金信
题目:383. 赎金信
我的感悟:
- 我自己独立做出来了。
理解难点:
- so easy
代码难点:
- 扩展理解defaultdic,
- 定义的时候
hashmap = defaultdict(int)
- hashmap拿到一个不存在的值的时候会设置为0
- int可以省略吗?
- 不可以,int是工厂函数。用于设置默认值的。
- int可以换成什么?
- list 或者set,默认值是空列表或者空集合。
- 如果真的这样写hashmap = defaultdict() 跟hashmap = {} 是一样的
总结概括:
代码示例:
- 我自己写的:
-
class Solution: def canConstruct(self, ransomNote: str, magazine: str) -> bool: # 把magazine杂志上的字符存进mapper中,并记录每个字符的次数 mapper = {} for word in magazine: mapper[word] = mapper.get(word,0) + 1 for s in ransomNote: mapper[s] = mapper.get(s,0) - 1 # 每次减去1 for v in mapper.values(): # 最后遍历1遍,看里面是否有负数, if v <0: # 有的话说明不能构成 return False return True
- 卡尔里,可以用defaultdict来写,好处是。get拿到空,不会报错,拿到None
- 我感觉还是我写的好。
-
from collections import defaultdict class Solution: def canConstruct(self, ransomNote: str, magazine: str) -> bool: hashmap = defaultdict(int) # 如果用普通字典在get拿到空{}会报错 for x in magazine: hashmap[x] += 1 for x in ransomNote: value = hashmap.get(x) print("我拿到的value:{}".format(value)) if not value or not value: return False else: hashmap[x] -= 1 return True if __name__ == '__main__': obj = Solution() ransomNote = "b" magazine = "a" print(obj.canConstruct(ransomNote,magazine))
通过截图:
资料:
题目链接/文章讲解:https://programmercarl.com/0383.%E8%B5%8E%E9%87%91%E4%BF%A1.html