LeetCode刷题(0002)---677. 键值映射,python3

LeetCode—677. 键值映射,python3

01题目描述:

实现一个 MapSum 类里的两个方法,insert 和 sum。

对于方法 insert,你将得到一对(字符串,整数)的键值对。字符串表示键,整数表示值。如果键已经存在,那么原来的键值对将被替代成新的键值对。

对于方法 sum,你将得到一个表示前缀的字符串,你需要返回所有以该前缀开头的键的值的总和。


示例 1:

输入: insert("apple", 3), 输出: Null
输入: sum("ap"), 输出: 3
输入: insert("app", 2), 输出: Null
输入: sum("ap"), 输出: 5

02题目分析:

1、实现两个功能,第一个是插入 insert ,字典 my_dict[key]=val 本身的就是:对于已经存在的覆盖(修改),对于不存在的添加!所以这一个很简单实现!
2、sum 方法就是计算以什么什么为 前缀 的,这一个就很容易的想到了 startwith
循环遍历全部字典。匹配 key 的前缀,获取 val 的值,然后求和。这一边一个获取keyval有很多的方式,我使用了一种很快捷,方便的方式j使用 items() 方法的遍历:items() 方法把字典中每对keyvalue组成一个元组,并把这些元组放在列表中返回。之后for循环同时拆包取出 key , value

重点理解 :同时获取key和value使用的item()函数获取到元组,然后拆包!

03解答:


class MapSum():

    def __init__(self):
        """
        Initialize your data structure here.
        """
        self.my_dict = {}
        # self.resoult = 0

    def insert(self, key: str, val: int) -> None:
        self.my_dict[key]=val
        # print(self.my_dict)

    def sum(self, prefix: str) -> int:
        result = 0
        for key,val in self.my_dict.items():
            if key.startswith(prefix):
                result += val
        return result

        
# Your MapSum object will be instantiated and called as such:
# obj = MapSum()
# obj.insert(key,val)
# param_2 = obj.sum(prefix)

04运行结果:

1.时间运行图:

在这里插入图片描述

2.内存使用情况

在这里插入图片描述

05结语:

个人记录,新手入门,多多学习,欢迎大家交流探讨!
个人网站: http://106.54.78.238/
song_of _sea的个人网站 http://106.54.78.238/

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值