#include<iostream>
#include<cctype>
#include<map>
#include<string>
using namespace std;
int main()
{
map<string,int> mp;
string s;
getline(cin,s);
int j=0;//定义在外面
for(int i=0;i<s.size();i++)
{
if(s[i]>='A' && s[i]<='Z') s[i] = tolower(s[i]);//转小写
if((s[i]>'a' && s[i]<'z') || (s[i]==' ' || s[i]==',' || s[i]=='.')) //只有s[i]是字母或特殊符号才操作
if((s[i]==' ' || s[i]==',' || s[i]=='.'))//空格,逗号,句号
{
if(mp.find(s.substr(j,i-j))==mp.end())//如果集合中没有这个字符串为key的元素,则加入
mp.insert(make_pair(s.substr(j,i-j),1));
else mp[s.substr(j,i-j)]++;
j = i+1;
}
}
if(mp.find("")!=mp.end())//如果有一个字符加一个空格导致截取到空字符串这种情况
mp.erase(mp.find(""));//那就删除这个空字符串,否则不用做处理
for(map<string,int>::iterator it = mp.begin();it!=mp.end();it++)
cout << it->first <<":"<<it->second<<"\n";
return 0;
}
//有空字符放到map里面是因为有这种情况,streets. A,即'.'后面紧接着是空格
网友评论