题目
实现一个 MapSum 类,支持两个方法,insert 和 sum:
MapSum() 初始化 MapSum 对象
void insert(String key, int val) 插入 key-val 键值对,字符串表示键 key ,整数表示值 val 。如果键 key 已经存在,那么原来的键值对将被替代成新的键值对。
int sum(string prefix) 返回所有以该前缀 prefix 开头的键 key 的值的总和。
思路
hashmap
代码
class MapSum {
Map<String,Integer> map;
Map<String,Integer> prefixmap;
public MapSum() {
map = new HashMap<>();
prefixmap = new HashMap<>();
}
public void insert(String key, int val) {
int a = val-map.getOrDefault(key,0);
map.put(key,val);
for(int i=1;i<=key.length();i++){
String cur = key.substring(0,i);
prefixmap.put(cur,prefixmap.getOrDefault(cur,0)+a);
}
}
public int sum(String prefix) {
return prefixmap.getOrDefault(prefix,0);
}
}