sgu - 274 - Spam-filter
题意:判断一个字符串是不是有效的邮件地址。
题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=274
——>>照着题目做。
注意:1、输入有空格。
2、测试的时候不要直接复制测试数据,手敲吧~(vjudge上的复制会多一个空格,sgu上的复制直接闪过去……)
#include <cstdio>
#include <iostream>
#include <cstring>
#include <cctype> using namespace std; const int maxn = 100 + 10; bool issymbol(char c){
bool ok = 0;
if(isalnum(c)) ok = 1;
if(c == '-' || c == '_') ok = 1;
return ok;
} int main()
{
int N, i;
char s[maxn];
scanf("%d", &N);
getchar();
while(N--){
//scanf("%s", s);
cin.getline(s, maxn);
bool ok = 1;
int len = strlen(s), cnt = 0, loc = 0;
if(len < 6) ok = 0;
for(i = 0; i < len; i++) if(s[i] == '@'){
loc = i; //找@位
cnt++;
}
if(cnt != 1 || loc == 0 || loc >= len-4) ok = 0;
if(ok){
if(s[0] == '.' || s[loc-1] == '.') ok = 0; //判断@前的两端是否为.
}
if(ok){ //判断@前是否只由symbol和.组成
for(i = 0; i <= loc-1; i++){
if(!issymbol(s[i]) && s[i] != '.'){
ok = 0;
break;
}
}
if(ok){ //判断是否有连续的.出现
for(i = 0; i < loc-1; i++) if(s[i] == '.' && s[i+1] == '.'){
ok = 0;
break;
}
}
}
if(ok){ //判断最后是否为.ll或.lll
if(isalpha(s[len-1]) && isalpha(s[len-2]) && isalpha(s[len-3]) && s[len-4] == '.'){
if(s[loc+1] == '.' || s[len-5] == '.') ok = 0; //判断@后两端是否是.
if(ok){ //判断@后是否只由symbol和.组成
for(i = loc+1; i <= len-5; i++) if(!issymbol(s[i]) && s[i] != '.'){
ok = 0;
break;
}
for(i = loc+1; i < len-5; i++) if(s[i] == '.' && s[i+1] == '.'){
ok = 0; //判断是否有连续的.出现
break;
}
}
}
else if(isalpha(s[len-1]) && isalpha(s[len-2]) && s[len-3] == '.'){
if(s[loc+1] == '.' || s[len-4] == '.') ok = 0; //判断@后两端是否是.
if(ok){ //判断@后是否只由symbol和.组成
for(i = loc+1; i <= len-4; i++) if(!issymbol(s[i]) && s[i] != '.'){
ok = 0;
break;
}
for(i = loc+1; i < len-4; i++) if(s[i] == '.' && s[i+1] == '.'){
ok = 0; //判断是否有连续的.出现
break;
}
}
}
else ok = 0;
}
if(ok) printf("YES\n");
else printf("NO\n");
}
return 0;
}
sgu - 274 - Spam-filter的更多相关文章
- Codeforces Gym 100338B Spam Filter 字符串哈希+贝叶斯公式
原题链接:http://codeforces.com/gym/100338/attachments/download/2136/20062007-winter-petrozavodsk-camp-an ...
- codeforces Gym 100338F Spam Filter 垃圾邮件过滤器(模拟,实现)
阅读题, 概要:给出垃圾邮件和非垃圾邮件的集合,然后按照题目给出的贝叶斯公式计算概率一封邮件是垃圾邮件的概率. 逐个单词判断,将公式化简一下就是在垃圾邮件中出现的次数和在总次数的比值,大于二分之一就算 ...
- Linux服务器---邮件服务spam
安装spam spam(SpamAssassin)利用perl来进行文字分析,他会检测邮件的标题.内容.送信人,这样就可以过滤出垃圾邮件 1.安装spam.由于spam的依赖太多,用户一定要使用yum ...
- Python Standard Library
Python Standard Library "We'd like to pretend that 'Fredrik' is a role, but even hundreds of vo ...
- OSCP Learning Notes - Privilege Escalation
Privilege Escalation Download the Basic-pentesting vitualmation from the following website: https:// ...
- 2016.09.14,英语,《Using English at Work》全书笔记
半个月时间,听完了ESLPod出品的<Using English at Work>,笔记和自己听的时候的备注列在下面.准备把每个语音里的快速阅读部分截取出来,放在手机里反复听. 下一阶段把 ...
- python 各模块
01 关于本书 02 代码约定 03 关于例子 04 如何联系我们 1 核心模块 11 介绍 111 内建函数和异常 112 操作系统接口模块 113 类型支持模块 114 正则表达式 115 语言支 ...
- python基础学习笔记5--对象
对象(object) 1.对象(object): 面向对象程序设计重要术语. 对象的特性:多态性.封装性.继承性 >>def add(x,y): return x+y 对于很多类型的参数都 ...
- python学习笔记之六:更加抽象
Python被称为面向对象的语言,创建自己的对象是python非常核心的概念.这里会介绍如何创建对象,以及多态,封装,方法,特性,超类以及继承的概念. 一. 对象的魔力 面向对象程序设计中的术语 对象 ...
随机推荐
- Egret应用开发实践(01) Egret与WebPack
Egret Egret引擎是一款使用TypeScript语言构建的开源免费的移动游戏引擎.Egret仅是纯粹的使用TypeScript语言来开发游戏,开发后可以使用Egret来打包为HTML5网页游戏 ...
- Android Failure [INSTALL_FAILED_OLDER_SDK]
今天编译工程发现 提示“ Failure [INSTALL_FAILED_OLDER_SDK]” 最后发现最小minSdkVersion 超过当前机器的版本,修改配置表中的minSdkVersion, ...
- codeforces 691E Xor-sequences 矩阵快速幂
思路:刚开始 n个元素,a[i][j]代表以i开头,j结尾的二元组符合条件的有多少 这是等于长度为2的数量 长度为3的数量为a*a,所以长度为n的数量是a^(k-1) 然后就是矩阵快速幂,然而我并不能 ...
- 软件测试技术(四)——闰年判断器+ int.Parse错误如何解决
目标程序 本次所测试的目标程序是一个闰年判断器,我们知道,一般情况下年份被4整除就可以了,但是如果遇到百年的时候还需要被400整除,于是有了如下的逻辑判断: bool isRunNian = fals ...
- QC开发只能修改指派给自己的缺陷,而其他的bug可以查看但是不允许修改
今天在QC9.0项目中增加了几个项目,然后我的想法是:开发只能修改指派给自己的缺陷,而其他的bug可以查看但是不允许修改 虽说qc我还是比较熟悉的,但是对于这个问题,感觉可能要用到脚本,对于脚本我一窍 ...
- strcasecmp在VS2010中提示未定义标识符
分析: strcasecmp(*,*)是用来比较字符串,定义在string.h头文件中,但是在windows下即使添加string.h头文件,依然会报错. 解决: 添加 #if defined(_MS ...
- POST 一张 图像的调试来认识 http post
上传图片的详细 2559字节
- Dictionary<实体,List<实体>>的比较
当Dictionary中Key为实体时,进行用ContainsKey比较会发现,就算Model为一样但是结果比较为不存在: 故用以下代码即可,现将Keys转换ToArray(),再用数组的Contai ...
- 常用的正则表达式归纳—JavaScript正则表达式
来源:http://www.ido321.com/856.html 1.正则优先级 首先看一下正则表达式的优先级,下表从最高优先级到最低优先级列出各种正则表达式操作符的优先权顺序: 2.常用的正则表达 ...
- 【暑假】[基本数据结构]根据BFS与DFS确定树
UVa10410 Tree Reconstruction 算法:根据BFS构造pos数组以区分关系,在此基础上对DFS序列操作.注:栈中存父结点,栈顶是最优先的父结点. 代码如下: #include& ...