对 e 妹儿公司的字符串处理
【问题描述】
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 妹儿公司的字符串处理相关推荐
- 跳妹儿学编程之ScratchJr(一):高级软件工程师告诉你什么是儿童编程,小孩要不要学儿童编程?
目录 Table of Contents 目录 一.前言 二.什么是儿童编程 三.儿童编程优点 1.培养程序员的思维方式 2.培抽象分析与解决问题的能力 3.培养.提高其创新力 4.培养英语与数学能力 ...
- 九妹儿第一次在同事面前亮相
今天晚上Sales招待Todd和我们吃饭,公司成都Site的大Boss也去了,吃的当然是火锅了. 随着温度升高,热气扑面而来,看着肉啊菜啊在油锅中翻腾,不知是何心情. 因为火锅店离家不远,所以让爸爸帮 ...
- 跳妹儿读绘本:我家孩子爱不释手的经典绘本之套装书
上篇分享了我给跳妹儿买书的经验,这里我就来说说这些跳妹儿非常喜欢并点读率高的绘本. 今天分享的主要是套装书,套装书的优点我在之前的文章中有提到过,而且迄今为止我买回来的套装书,每一套我家跳妹儿都非常喜 ...
- 教妹学 Java:字符串拼接
"哥,你让我看的<Java 开发手册>上有这么一段内容:循环体内,拼接字符串最好使用 StringBuilder 的 append() 方法,而不是 + 号操作符.这是为什么呀? ...
- 跳妹儿学编程之ScratchJr(二):主流编程语言的区别,小孩如何选择(Scratch/Java/Python/C/C++)
目录 一.前言 二.主流编程语言区分 1.概括 2.Scratch 3.C 4.C++ 5.Java 6.Python 7.对比 a.彼此关系 b.编写难度(入手难度) c.执行效率(执行速度) 三. ...
- 公司--》字符串截取
var startIndex = $(this).attr("id").indexOf("_"); //_出现的位置var index = $(this).at ...
- sigquit信号默认忽略吗_老妹儿,你真的搞懂了 Shell 信号吗?
作者:李振良OK链接:https://blog.51cto.com/lizhenliang/1899347 哈喽,各位新来的小伙伴们,大家好!由于公众号做了改版,为了保证公众号的资源能准时推送到你手里 ...
- 跳妹儿学编程之ScratchJr(四):ScratchJr入门主操作界面与绘画区域详解
目录 一.前言 二.什么是ScratchJr 三.ScratchJr的安装 1.iPad上安装 2.安卓Pad上安装 3.查看官方例子 四.ScratchJr的主操作界面介绍 五.ScratchJr的 ...
- 跳妹儿学编程之ScratchJr(六):第一个ScratchJr程序HelloWorld以及ScratchJr程序如何执行
一.前言 前面我们已经介绍过了ScratchJr的主界面.绘图界面以及所有的程序积木块的功能和基本应用.本章我们将带大家一起来完成我们的第一个ScratchJr程序HelloWorld,并以此给大家介 ...
最新文章
- 美国多个州对谷歌提起新的反垄断诉讼
- NHibernate 中删除数据的几种方法
- PHP str_word_count
- 利用Python如何实现数据驱动的接口自动化测试
- 四十二、ETL工具Kettle的转换步骤
- cacls查看文件权限
- Magento: 添加first name 和 last name到newsletter Add additional fields to your newsl
- 网页遥控室内智能设备
- 【循序渐进学Python】4. Python中的序列——字典
- 如何查看对方的QQ登录是IP地址的方法
- freeswitch+kamailio+unimrcp
- SLAM常见面试题集锦
- 关于金蝶K3系统(工业)供应链部分,使用前需要基本了解的一些信息
- 判断和循环——实战收尾篇1(二分法、抛硬币等)
- 哪些英文单词改变时态需要双写末尾字母
- ES8218E低功耗24位ADC芯片 可直接接麦克风
- python 中range(10)什么意思_range什么意思python编程【面试题详解】
- Java中找朋友的代码_找朋友游戏介绍
- 像差分析(更新。。。)
- 加权平均资本成本【读书笔记】
热门文章
- 刘金藏:3.24黄金晚间如何操作3.25黄金原油最新操作策略
- ugui batches
- python读取excel股票历史数据_python实例:从excel读取股票代码,爬取股票信息写到代码后面的单元格中...
- [HIMCM暑期班]第1课:概述
- 测脉冲频率几种方法的比较
- linux进程内存结构体,Linux下网络编程(3)——进程间通信(IPC),共享内存,传递结构体数据...
- VUE将网址转化为二维码 并下载
- easypoi 导入错误返回流_C++ I/O 流
- 我没捏出来的脸,淘宝帮我做到了
- 如何学习AUTOSAR