2016 Personal Training #7 Div.2 CodeForces 589A Email Aliases
来源:互联网 发布:mongodb 数据库设计 编辑:程序博客网 时间:2024/05/31 06:23
这题涉及面有点广啊,做之前建议先了解map和vector这些STL知识,字符串了解下strcpy和strcmp函数知识,c++中string输出记得用c++ cout输出。
题意:输入个数n然后输入n行字符串,所有这些字符串大小写不区分,这些字符串类似于平时用的邮箱地址格式login@domain 有个特殊的格式@bmail.com 这个字符@前的'.'字符相当于没有,@前的'+'字符后面的所有字符都相当于没有,找出这n个字符串中有多少种不同的字符串分别输出每一种有多少个,后面接着输出这种字符串所有的字符串。
思路:我们可以强制将所有大写转换为小写,然后根据条件处理'.'和'+',最后map映射字符串找出总共多少种,vector存入每种后面的所有字符串。
代码如下:
#include<bits/stdc++.h>using namespace std;typedef long long LL;#define INF 0x3f3f3f3fchar str[105];char S[]={"bmail.com"};int num[105];int main(){ int n; while(~scanf("%d",&n)){ map<string,int>p;map<string,int>::iterator it;vector<string>d[20005]; int sum=0; p.clear(); while(n--) { char str1[105],s[105]; scanf("%s",str); int len=strlen(str),pos; strcpy(str1,str); //printf(" %s\n",str1); for(int i=0;i<len;i++) { if(str1[i]>='A'&&str1[i]<='Z') { str1[i]+=32; } if(str1[i]=='@') { pos=i; } } int len1=0; //printf("------%s\n",str1+pos+1); if(strcmp(str1+pos+1,S)==0) { for(int i=0;i<pos;i++) { if(str1[i]=='.') continue; if(str1[i]=='+') break; s[len1++]=str1[i]; } //printf("*****%s\n",str1); for(int i=pos;i<len;i++) { s[len1++]=str1[i]; } s[len1]=0; //printf("#####%s\n",str1); if(p.find(s)==p.end()) p[s]=sum++; int cnt=p[s];d[cnt].push_back(str); continue; } //printf("-------%d %s\n",pos,str1); if(p.find(str1)==p.end()) p[str1]=sum++; int cnt=p[str1]; d[cnt].push_back(str); } printf("%d\n",sum); for(int i=0;i<sum;i++) { printf("%d",d[i].size()); for(int j=0;j<d[i].size();j++) { cout<<" "<<d[i][j]; } printf("\n"); d[i].clear(); } }}
0 0
- 2016 Personal Training #7 Div.2 CodeForces 589A Email Aliases
- CodeForces 589A Email Aliases
- CodeForces 589A Email Aliases
- K - Email Aliases CodeForces - 589A
- 2016 Personal Training #8 Div.2 A B H
- 2016 Personal Training #6 Div.2 G
- 2016 Personal Training #6 Div.2
- 2016 Personal Training #9 Div.2
- 2016 Personal Training #8 Div.2 I - Lucky Numbers CodeForces 95B
- 2016 Personal Training #4 Div.2 A B C G H
- CodeForces 589A -- A. Email Aliases (字符串水题 STL)
- 2016 Personal Training #2 Div.2 SPOJ AMR11A
- 2016 Personal Training #5 Div.2 Gym 100637J
- 2016 Personal Training #3 Div.2 SGU 409
- 2016 Personal Training #11 Div.2 B G J
- 2016 Personal Training #1 Div.2 D - 1D Cafeteria (B) Gym 100989D
- 2015-2016 ACM-ICPC, NEERC, Southern Subregional Contest A Email Aliases
- Codeforces Round #294 (Div. 2) -- C. A and B and Team Training
- 【Leetcode】之Unique Binary Search Trees
- shell编程
- android studio xposed教程(含jar下载地址)
- vs2010:LNK1104无法打开.exe文件错误
- 二十三、访问者模式Visitor(行为型)
- 2016 Personal Training #7 Div.2 CodeForces 589A Email Aliases
- 输出1到N之间的素数
- ServiceLoader和DriverManager使用总结
- 循环结构之 while循环
- IOS学习之核心动画-倒影
- java代理机制
- Java成长之路05
- jquery生成二维码插件-封装
- 在CentOS上编译安装FFmpeg