【问题描述】

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

【样例说明】

​ 在第一个样例中,单词agapov每个字母开始的串(至’@‘之前)都是合法的e-mail开始部分,共有6种,’@‘之后’.‘之前的字符串符合标准,’.'之后的单词com每个字母开始的串都是合法的结束部分,共有3种,因此,由这个字符串可以解析出6×3=18种地址。

评价

此题为实验七字符串的第十一题,比前面的题目稍微复杂了一点

实现逻辑

我的思路是对一个输入的字符串,用for循环检测到@符号,然后设置变量j和k,分别向前看和向后看,检测@前面的字母和点后面的字母,加到cntl和cntr两个计数器中,最后用sum把输出两个计数器相乘的结果

代码

#include <iostream>using namespace std;int main()
{string s;cin>>s;int sum=0,i=0,cntl=0,cntr=0,j;for( i =0;i<s.length();i++){j=i;while(s[i] =='@')//检测@符号{j--;//J不断向左看if(s[j]>='a'&&s[j]<='z'){cntl++;}if(s[j]=='.'||j==0)//打破循环条件{break;}}int k=i+1;//这个WHILE是跳过@和.之间的字母或数字while((s[k]>='0'&&s[k]<='9')||(s[k]>='a'&&s[k]<='z')){k++;}j=k;//检测点后面的字母while(s[k]=='.'){j++;if(s[j]>='a'&&s[j]<='z'){cntr++;}else{break;}}sum+=cntl*cntr;cntl=cntr=0;}cout<<sum;return 0;
}

对​ e 妹儿公司的字符串处理相关推荐

  1. 跳妹儿学编程之ScratchJr(一):高级软件工程师告诉你什么是儿童编程,小孩要不要学儿童编程?

    目录 Table of Contents 目录 一.前言 二.什么是儿童编程 三.儿童编程优点 1.培养程序员的思维方式 2.培抽象分析与解决问题的能力 3.培养.提高其创新力 4.培养英语与数学能力 ...

  2. 九妹儿第一次在同事面前亮相

    今天晚上Sales招待Todd和我们吃饭,公司成都Site的大Boss也去了,吃的当然是火锅了. 随着温度升高,热气扑面而来,看着肉啊菜啊在油锅中翻腾,不知是何心情. 因为火锅店离家不远,所以让爸爸帮 ...

  3. 跳妹儿读绘本:我家孩子爱不释手的经典绘本之套装书

    上篇分享了我给跳妹儿买书的经验,这里我就来说说这些跳妹儿非常喜欢并点读率高的绘本. 今天分享的主要是套装书,套装书的优点我在之前的文章中有提到过,而且迄今为止我买回来的套装书,每一套我家跳妹儿都非常喜 ...

  4. 教妹学 Java:字符串拼接

    "哥,你让我看的<Java 开发手册>上有这么一段内容:循环体内,拼接字符串最好使用 StringBuilder 的 append() 方法,而不是 + 号操作符.这是为什么呀? ...

  5. 跳妹儿学编程之ScratchJr(二):主流编程语言的区别,小孩如何选择(Scratch/Java/Python/C/C++)

    目录 一.前言 二.主流编程语言区分 1.概括 2.Scratch 3.C 4.C++ 5.Java 6.Python 7.对比 a.彼此关系 b.编写难度(入手难度) c.执行效率(执行速度) 三. ...

  6. 公司--》字符串截取

    var startIndex = $(this).attr("id").indexOf("_"); //_出现的位置var index = $(this).at ...

  7. sigquit信号默认忽略吗_老妹儿,你真的搞懂了 Shell 信号吗?

    作者:李振良OK链接:https://blog.51cto.com/lizhenliang/1899347 哈喽,各位新来的小伙伴们,大家好!由于公众号做了改版,为了保证公众号的资源能准时推送到你手里 ...

  8. 跳妹儿学编程之ScratchJr(四):ScratchJr入门主操作界面与绘画区域详解

    目录 一.前言 二.什么是ScratchJr 三.ScratchJr的安装 1.iPad上安装 2.安卓Pad上安装 3.查看官方例子 四.ScratchJr的主操作界面介绍 五.ScratchJr的 ...

  9. 跳妹儿学编程之ScratchJr(六):第一个ScratchJr程序HelloWorld以及ScratchJr程序如何执行

    一.前言 前面我们已经介绍过了ScratchJr的主界面.绘图界面以及所有的程序积木块的功能和基本应用.本章我们将带大家一起来完成我们的第一个ScratchJr程序HelloWorld,并以此给大家介 ...

最新文章

  1. 美国多个州对谷歌提起新的反垄断诉讼
  2. NHibernate 中删除数据的几种方法
  3. PHP str_word_count
  4. 利用Python如何实现数据驱动的接口自动化测试
  5. 四十二、ETL工具Kettle的转换步骤
  6. cacls查看文件权限
  7. Magento: 添加first name 和 last name到newsletter Add additional fields to your newsl
  8. 网页遥控室内智能设备
  9. 【循序渐进学Python】4. Python中的序列——字典
  10. 如何查看对方的QQ登录是IP地址的方法
  11. freeswitch+kamailio+unimrcp
  12. SLAM常见面试题集锦
  13. 关于金蝶K3系统(工业)供应链部分,使用前需要基本了解的一些信息
  14. 判断和循环——实战收尾篇1(二分法、抛硬币等)
  15. 哪些英文单词改变时态需要双写末尾字母
  16. ES8218E低功耗24位ADC芯片 可直接接麦克风
  17. python 中range(10)什么意思_range什么意思python编程【面试题详解】
  18. Java中找朋友的代码_找朋友游戏介绍
  19. 像差分析(更新。。。)
  20. 加权平均资本成本【读书笔记】

热门文章

  1. 刘金藏:3.24黄金晚间如何操作3.25黄金原油最新操作策略
  2. ugui batches
  3. python读取excel股票历史数据_python实例:从excel读取股票代码,爬取股票信息写到代码后面的单元格中...
  4. [HIMCM暑期班]第1课:概述
  5. 测脉冲频率几种方法的比较
  6. linux进程内存结构体,Linux下网络编程(3)——进程间通信(IPC),共享内存,传递结构体数据...
  7. VUE将网址转化为二维码 并下载
  8. easypoi 导入错误返回流_C++ I/O 流
  9. 我没捏出来的脸,淘宝帮我做到了
  10. 如何学习AUTOSAR