各种邮箱不分大小写,@bmail.com结尾是特殊的,后面再加东西就不是了
如果结尾是@bmail.com,那@前的点(.)可以忽略,第一个加号(包括)到@前都忽略
优秀的是对输出无要求。
#include <bits/stdc++.h>
using namespace std;
string a[20005];
map<string,int> mp;
map<string,string> feng;
map<string,int>::iterator it;
int main()
{
int n;
string str;
while(scanf("%d", &n) != EOF)
{
for(int i = 1; i <= n; i++)
{
cin>>str;
a[i] = str;
for(int j = 0; j<str.length(); j++)
if( isalpha(str[j]) )
str[j] = tolower(str[j]);
int z = str.find('@');
if(str.substr(z+1) != "bmail.com")
{
mp[str]++;
feng[str]+=" ";
feng[str]+=a[i];
}
else
{
string s ="";
for(int j = 0; str[j] != '@'; j++)
{
if(str[j] == '+')
break;
else if(str[j] != '.')
s+=str[j];
}
s += str.substr(z);
mp[s]++;
feng[s]+=" ";
feng[s]+=a[i];
}
}
cout<<mp.size()<<endl;
for(it = mp.begin(); it != mp.end(); it++)
{
cout<<it->second<<feng[it->first]<<endl;
}
}
}