EOJ(排序)——97. 邮件地址排序
2019-01-09 10:19
363 查看
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_29978597/article/details/86134510
97. 邮件地址排序
现接收到一大批电子邮件,邮件地址格式为:用户名@主机域名,要求把这些电子邮件地址做主机域名的字典序升序排序,如果主机域名相同,则做用户名的字典序降序排序。
输入
第一行输入一个正整数 n,表示共有 n 个电子邮件地址需要排序。
接下来 n 行,每行输入一个电子邮件地址(保证所有电子邮件地址的长度总和不超过 106)。
对于 50% 的数据,保证 n⩽100,|si|⩽100。
用户名只包含字母数字和下划线,主机域名只包含字母数字和点。
输出
按排序后的结果输出 n 行,每行一个电子邮件地址。
input
8
23485@qq.com
rieruer@163.com
39489384@qq.com
eruie@ecnu.edu.cn
rtff@163.com
84934804@qq.com
fdll@ecnu.edu.cn
598695@qq.com
output
rtff@163.com
rieruer@163.com
fdll@ecnu.edu.cn
eruie@ecnu.edu.cn
84934804@qq.com
598695@qq.com
39489384@qq.com
23485@qq.com
题目大意:
给出一些邮件地址,按域名和用户名排序。
题目解析:
用结构体存储数据,在读取数据时候用strtok函数分离用户名和主机域名,保存用户名和主机域名,然后利用qsort函数排序。(目测要用hash表来处理,加快查询速度,不过还没刷到那,下面代码只能过一半样例)
具体代码:
#include<iostream> #include<stdlib.h> #include<string.h> using namespace std; struct address{ char username[110]; char adminname[110]; }arr[500]; int cmp(const void* a,const void* b){ address add1=*(address*)a,add2=*(address*)b; if(strcmp(add1.adminname,add2.adminname)!=0) return strcmp(add1.adminname,add2.adminname); else return strcmp(add2.username,add1.username); } int main() { int n; cin>>n; getchar(); for(int i=0;i<n;i++){ char s[110]; cin.getline(s,110); strcpy(arr[i].username,strtok(s, "@")); strcpy(arr[i].adminname,strtok(NULL, "@")); } qsort(arr,n,sizeof(arr[0]),cmp); for(int i=0;i<n;i++){ printf("%s@%s\n",arr[i].username,arr[i].adminname); } return 0; }
相关文章推荐
- java正则表达式小练习(IP地址检测、排序,叠词的处理,邮件地址的获取)
- 百度云加速注意邮件地址混淆/WAF
- EOJ 3292 解密字符串(排序)
- 我的Exchange 2010 启用匿名了。我怎么防止别人任意伪造一个邮件地址发送给我内部的人呢?
- C#验证Email是否真正存在,不是验证邮件格式,是邮件地址是否存在
- exchange中实现一个用户邮箱拥有多个邮件地址
- EOJ(排序)——2015. 自修室
- 在asp.net如何取得ActiveDirectory域中用户的信息,比如工号,邮件地址等等
- 邮件中的网页链接地址打不开的解决方法
- 邮件地址错误而引起的Outlook Express群发邮件故障
- jquery正则匹配url地址和邮件地址的实例
- 仿163填写邮件地址自动显示下拉
- 伪造发件人邮件地址
- 在网站中用邮件地址作为用户名的不足之处
- 月光博客邮件订阅地址更改
- 【如何校验邮件地址的有效性】第三篇 :原理二
- js正则表达式验证邮件地址
- U-Mail:邮件营销如何大量获取并筛选有效地址
- javascript验证邮件地址和MX记录的方法
- JS验证邮件地址格式方法小结