【LeetCode】键值映射 Java 题解
题目描述
实现一个 MapSum 类,支持两个方法,insert 和 sum:
MapSum() 初始化 MapSum 对象 void insert(String key, int val) 插入 key-val 键值对,字符串表示键 key ,整数表示值 val 。如果键 key 已经存在,那么原来的键值对将被替代成新的键值对。int sum(string prefix) 返回所有以该前缀 prefix 开头的键 key 的值的总和。
复制代码
思路分析
今天的算法每日一题是设计类题目。题目描述定义是实现 map 类,Java 中有很多定义好的 map,我们可以直接使用。
首先,我们使用暴力法解决这个题目,采用 treeMap 存储 k - v, 然后我们遍历每一个 key,看 key 是否包含 prefix。在 Java 中,一般使用 startsWith() 方法检测字符串是否以指定的前缀开始。还有一个常见 contains() 方法用于判断字符串中是否包含指定的字符或字符串。这两个方法,我们在使用的时候要区分清楚,具体实现代码如下:
通过代码
复制代码
总结
通过代码中使用的 startsWith() 是一个很常见的,写的很好的函数。方便学习,实现代码如下:
复制代码
这个代码,首先判断 prefix 和 s 的长度关系,然后进行逐位字符比较,执行效率高!我们自己写代码也可以这样写,思路清晰容易理解。
坚持算法每日一题,加油!
版权声明: 本文为 InfoQ 作者【HQ数字卡】的原创文章。
原文链接:【http://xie.infoq.cn/article/18233f8938ce42180ec8c5d71】。文章转载请联系作者。
评论