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非常核心的概念.这里会介绍如何创建对象,以及多态,封装,方法,特性,超类以及继承的概念. 一. 对象的魔力 面向对象程序设计中的术语 对象 ...
随机推荐
- 【转】NSDictionary以及NSMutableDictionary的用法
原文网址:http://my.oschina.net/u/1245365/blog/177736 摘要 Foundation中的字典是由 键—值 对组成的数据集合.通过key(键),查找对应的valu ...
- 数组乘积--满足result[i] = input数组中除了input[i]之外所有数的乘积(假设不会溢出
数组乘积(15分) 输入:一个长度为n的整数数组input 输出:一个长度为n的整数数组result,满足result[i] = input数组中除了input[i]之外所有数的乘积(假设不会溢出). ...
- 《Python基础教程(第二版)》学习笔记 -> 第七章 更加抽象
对象的魔力 多态:意味着可以对不同类的对象使用同样的操作: 封装:对外部世界隐藏对象的工作细节: 继承:以普通的类为基础建立专门的类对象 多态① 多态和方法绑定到对象特性上面的函数称为方法(metho ...
- XShell 屏幕锁定的恢复方法(Ctrl+Q)
操作XShell过程中很多时间大家会习惯性的按Ctrl+S进行保存. Ctrl+S在XShell的作用是屏幕锁定,很多朋友会无法操作,会直接把窗口关闭. 解决方法: 快捷键 Ctrl+Q 即能完成解锁 ...
- linux-制作linux启动U盘
1. 使用的制作工具 Ø 下载需要制作启动盘的linux的iso文件 Ø 制作启动盘的软件linux usb creater Ø U盘(大小差不多需要4G的空间) 软件可以的下载的地址:http:// ...
- MFC字体与文本输出
字体 成员函数 1.CFont( ); 构造一个CFont对象.此对象在使用之前应该先使用CreateFont.CreateFontIndirect.CreatePointFont或CreatePoi ...
- Windows Azure 不能ping通的解决方案
Windows Azure 不能ping通如何解决? 为了避免Ping Flood攻击,Windows Azure不开放对外ICMP通讯协定,所以使用ping命令我们是无法ping通的.在微软资料中心 ...
- elisp debug
M-x 是运行command的意思. 若使用常规Emacs debugger(即不使用edebuger),先把要debug的函数加入到debug-on-entry: M-x debug-on- ...
- HDU4456-Crowd(坐标旋转+二位树状数组+离散化)
转自:http://blog.csdn.net/sdj222555/article/details/10828607 大意就是给出一个矩阵 初始每个位置上的值都为0 然后有两种操作 一种是更改某个位置 ...
- 【转】Nginx系列(四)--工作原理
原博文出于: http://blog.csdn.net/liutengteng130/article/details/46724081 感谢! 上篇文章介绍了Nginx框架的设计之管理进程以及 ...