day07 代码随想录算法训练营 383. 赎金信

发布时间 2024-01-03 15:03:18作者: o蹲蹲o

题目: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