- 阿里巴巴的手机代理商正在研究 infra 输入法的新功能。他们需要分析单词频率以改进用户输入法的体验。于是需要你在系统内核里面写一个 API。 API 有如下功能:
添加操作
添加操作格式为
insert barty 8
,意思为插入barty
这个单词,这个单词词频为 88 次。注意如果再次添加insert barty 8
操作时,就会将词频增加为 1616 次。(不会出现词频 \le 0≤0 的情况)。删除操作
删除操作格式为
delete barty
,意思为删除所有barty
这个单词。如果当前没有删除的词汇,输出
Empty
并不计入版本号。查询操作
查询操作格式为
query ty
,意思为查询当前版本以ty
结尾的单词词频总和。
解题思路:用map<string,int>暴力过题,详情看代码操作。
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<map>
#include<algorithm>
using namespace std;
string a,c;
int main()
{
int n,m,k;
scanf("%d",&n);
while(n--)
{
map<string,int>s;
scanf("%d",&m);
for(int i=0;i<m;i++)
{
cin>>a;
if(a=="insert")
{
cin>>c>>k;
s[c]+=k;
}
if(a=="delete")
{
cin>>c;
if(s[c]==NULL)
cout<<"Empty"<<endl;
else
s[c]=0;
}
if(a=="query")
{
cin>>c;
int sum=0;
map<string,int>::iterator it;
for(it=s.begin(); it!= s.end(); it++)
{
int p=it->first.size()-c.size();
if(p>=0)
if(it->first.substr(p)==c)
sum+=it->second;
}
printf("%d\n",sum);
}
}
}
return 0;
}