題目: LeetCode - 677. Map Sum Pairs

題目說明

設計一個 Class,並完成以下的函式。

  • void insert(string key, int val):建立 keyval 的映射,若 key 已經存在就將新的 val 覆蓋舊的 val
  • int sum(string prefix):回傳所有 key 的前綴為 prefixval 總和。

解題思路

使用 Unordered_map 存放資料。

  • void insert(string key, int val):直接讓 m[key] = val 即可。
  • int sum(string prefix):遍歷 map,使用 String 的 find() 函式,若是結果為 0 代表 prefix 為當前 key 的前綴,計算總和即可。

參考解法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class MapSum {
public:
/** Initialize your data structure here. */
MapSum() {}

void insert(string key, int val) { m[key] = val; }

int sum(string prefix)
{
int _sum{};
for(auto& [key, val] : m) if(!(key.find(prefix))) _sum += val;
return _sum;
}

private:
unordered_map<string, int> m;
};