【问题描述】e 妹儿公司的一个主要业务是提供电子邮件服务,每天都有数以万计的用户在使用该平台收发电子邮件e-mail。然而不幸的是,最近公司的邮件服务器遭受到了网络攻击,几乎所有的邮件内容都受到了破坏,每个邮件都只留下了一个长长的字符串。恢复所有邮件是不可能完成的任务,但似乎从这串留下的字符串中还可以解析出一些可能的e-mail地址,这样公司可以通过向这些解析出的e-mail地址发送邮件以减少用户的损失。
一个有效的e-mail地址的形式符合以下原则:
1、邮件开始部分必须是字母、数字和‘’组成的串,但必须以字母开头
2、接着必须为字符‘@’
3、接着是非空的字母或数字序列
4、接着必须为‘.’
5、地址必须以非空的字母串结束,不能含有数字,’’,和’.’
你很幸运地承担了这项工作,但请注意子串的区分,子串是指一个字符串中某些连续的字符组成的串。对于两个子串,其中一个组成的字符编号为l1、l1+1、l1+2、…、r1,另外一个组成的字符编号为l2、l2+1、l2+2、…、r2,如果l1≠l2或r1≠r2,则认为这是两个不同的子串。
【输入形式】
输入仅有一行,为一个字符序列s1s2…sn( 1≤ n ≤ 106),为给定的字符串。输入保证这个字符串中只包含小写字母、数字以及字符 ‘.’、‘_’、‘@’。
【输出形式】

输出为一个数,表示可以解析出的有效e-mail地址的数量。
【样例输入1】

gerald.agapov1991@gmail.com
【样例输出1】

18
【样例输入2】

x@x.x@x.x_e_@r1.com
【样例输出2】

8
【样例输入3】

a___@1.r
【样例输出3】

1
【样例输入4】

.asd123__…@
【样例输出4】

0

s.find(str) ; s.erase(start,length); str=s.substr(start, length);分别是查找,擦除,以及提取字串

by2020届信息院通信 毕

#include <iostream>
#include <string>
#include <string.h>
using namespace std;
int dizhi(string s) //验证地址是否符合要求,并且返回有几个字母(也就是几种情况)
{char* p = &s[0];int x = 0;//计数几位字母while ((*p>=65&&*p<=90)||(*p>=97&&*p<=122)) {x++;p++;}return x;
}
int kaitou(string s)//计算某一个@前面合法开头数目,就是@前面所有字母个数;
{int num = 0;for (int i = 0; i < s.length(); i++){char* p = &s[i];if (!(((*p >= 65 && *p <= 90) || (*p >= 97 && *p <= 122)) || *p == 95 || (*p >= 48 && *p <= 57)))//既不是字母也不是数字,还不是_, 不卡测试样例漏洞,挑战全网最全条件!!{num = 0;}else if((*p >= 65 && *p <= 90) || (*p >= 97 && *p <= 122))num++;}return num;
}
int main()
{int num = 0;string s;getline(cin, s);while (s.find("@") != -1)//当还能在剩余子串里面找不到“@”时结束{int dz =0,kt=0;//初始化本次循环针对的某个“@”前后地址和开头情况个数int l=s.length();//总长度计算int a=s.find("@");//字符串查找@并返回其下标的函数,包含于<string.h>头文件string h =s.substr(a + 1, l - a - 1);//又是一个函数,把@后面第一个"."到结尾的所有字符取出,作为一个新的字符串存储在hou(子串)int b=h.find(".");string c =h.substr(b + 1, h.length() - 1);string qian=s.substr(0, a);//把@前面取出来dz =dizhi(c);kt =kaitou(qian);num=num+dz * kt;s.erase(0, qian.length()+b+2);//是将@后第一个"."及其之前字符擦除的函数,得到新子串,也保留了.后面的地址,万一就是下一个邮件的开头呢!}cout << num;return 0;
}

11. E-mail地址byHNU 2020小毕相关推荐

  1. 实验十 学生成绩管理(二进制文件读写)byHNU信息院2020小毕

    实验十 文件读写 学生成绩管理(二进制文件读写) [问题描述] 在以下问题中,定义学生的结构体student,录入学生信息,并存入到二进制文件grade.bin中,要求存入的是按照总成绩从大到小的顺序 ...

  2. 实践应用|快来pick你喜欢的小姐姐吧,Python爬取青春有你2和创造营2020小姐姐数据

    文章目录 先看结果 ①创造营2020撑腰榜前三甲 ②青春有你2当前官方榜前三甲 ③Face++男女视角颜值最高 女性视角颜值第一名 男性视角颜值第一名 ④小姐姐们籍贯分布(pyecharts作图) 创 ...

  3. win7系统怎么查看服务器IP地址,win7系统的ip地址在哪 小编教你怎么查看

    很多刚开端运用windows7系统的朋友不晓得w7的ip地址在哪.w7的ip地址在哪?小编教你怎样查看w7的ip地址.今天小编就带来了两种十分简单查看w7的ip地址的办法供大家学习.w7的ip地址在哪 ...

  4. 低字节+高字节+字地址+大端序+小端序全辨析

    低字节+高字节+字地址+大端序+小端序全辨析 @(组成原理) 本次总结这个知识点的起因是一道相对寻址题中把这个知识点作为基本条件,然而其他的问题我都明白,却卡在了低字节为字地址的存放方式中.因此有必要 ...

  5. 华为、思科、爱立信、诺基亚、中兴等全球11大通讯设施企业2020年第三季度业绩...

    华为发布基于国际财务报告准则未经审计的2020年三季度经营业绩.2020年前三季度,公司实现销售收入6713亿元人民币(合1004亿美元),同比增长9.9%,净利润率8.0%.2020年前三季度业务经 ...

  6. Fri Sep 11 22:24:03 CST 2020 WARN: Establishing SSL connection without server‘s identity verificatio

    今天在建立连接的时候发现有这个问题 错误信息:Fri Sep 11 22:24:03 CST 2020 WARN: Establishing SSL connection without server ...

  7. 4.11、socket地址

    4.11.socket地址 1.通用 socket 地址 2.专用socket地址 1.通用 socket 地址 socket 网络编程接口中表示 socket 地址的是结构体 sockaddr,其定 ...

  8. Python零基础速成班-第11讲-Python日志Logging,小游戏设计game of life

    Python零基础速成班-第11讲-Python日志Logging,小游戏设计game of life 学习目标 Python日志Logging 小游戏设计game of life 课后作业(2必做) ...

  9. 实验八 结构体 编程题 5. 看电影 HNU小毕

    [问题描述]湖南大学正在举办一场重要的国际学术会议,出席会议的 n 位科学家来自不同的国家,每位科学家都只熟悉一种语言,为方便起见,世界上所有的语言用1~1000的数字编号来列出. 晚上,主办方安排所 ...

最新文章

  1. python3 all any 判断迭代参数 是否全部 是否有 为true
  2. JSP内置对象(request、session、application)
  3. 树莓派ROS配置指南
  4. 双路由器双小型交换机组建公司网络,2个公网IP上网案例(转载)
  5. 【redis系列】redisTemplate缓存常用工具类
  6. android 视网膜黄斑检查 amsler,自测黄斑病变 | 一张图搞定
  7. NumPy——生成随机数的学习笔记~
  8. jrtplib 编译安装配置
  9. DPDK ip分片与重组的设计实现
  10. 你应该知道的Android 7.0
  11. 性能测试ftp服务器,linux测试ftp服务器
  12. 力学专业做cae需要学c语言吗,CAE工程师是需要掌握力学知识到何种程度?
  13. 魂斗罗(CONTRA EVOLUTION):进化革命PC版
  14. 主键,唯一索引 聚集索引的关系
  15. 【案例分享】高效率利器 - SC 频谱分析仪
  16. mysql手机号段地区库_最新手机号段归属地数据库 2019年12月版 441831条记录
  17. 如何降低运放噪声?运放电路噪声降低措施
  18. Tomcat 运行报错 - This is very likely to create a memory leak
  19. 二级MySQL数据库程序设计(一)
  20. mysql数据库备份工具_MySQL数据库备份工具和六种方法介绍

热门文章

  1. 移动阅读市场也需要“小而美”
  2. [Oracle报错]EXP-00091: Exporting questionable statistics.
  3. jas完成编译后提示:HTTP Status 404 - /shop/user_regist.action }其中 和}代表什么
  4. 【全栈软件测试】二、Windows服务器(1)搭建DNS服务器
  5. 移动端touch事件,实时获取touchmove移动下的最新元素
  6. NLinteraction包的使用
  7. 夕去り狼 - ルワン
  8. 【运维面试】k8s的监控指标
  9. pymssql中文乱码踩坑
  10. Axure:如何在Axure中使用中继器