Implement a MapSum class with insert
, and sum
methods.
For the method insert
, you'll be given a pair of (string, integer). The string represents the key and the integer represents the value. If the key already existed, then the original key-value pair will be overridden to the new one.
For the method sum
, you'll be given a string representing the prefix, and you need to return the sum of all the pairs' value whose key starts with the prefix.
Example 1:
Input: insert("apple", 3), Output: Null Input: sum("ap"), Output: 3 Input: insert("app", 2), Output: Null Input: sum("ap"), Output: 5
知识点:map的基本使用 ; string.find( )
代码1:
class MapSum {
public:
/** Initialize your data structure here. */
map<string,int> m;
MapSum() {
//return m;
}
void insert(string key, int val) {
m[key]=val;
}
int sum(string prefix) {
int sum=0;
for(auto mm:m){
string temp=mm.first;
if(temp.find(prefix)==0){sum += mm.second;}
}
return sum;
}
};
/**
* Your MapSum object will be instantiated and called as such:
* MapSum obj = new MapSum();
* obj.insert(key,val);
* int param_2 = obj.sum(prefix);
*/
代码2:
class MapSum {
public:
/** Initialize your data structure here. */
MapSum() {
}
void insert(string key, int val) {
m[key]=val;
}
int sum(string prefix) {
int res=0;
for(auto mm:m){
if(mm.first.find(prefix)==0){res += mm.second;}
}
return res;
}
private:
map<string,int> m;
};
/**
* Your MapSum object will be instantiated and called as such:
* MapSum obj = new MapSum();
* obj.insert(key,val);
* int param_2 = obj.sum(prefix);
*/