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非常核心的概念.这里会介绍如何创建对象,以及多态,封装,方法,特性,超类以及继承的概念. 一. 对象的魔力 面向对象程序设计中的术语 对象 ...
随机推荐
- 运维角度浅谈MySQL数据库优化(转)
一个成熟的数据库架构并不是一开始设计就具备高可用.高伸缩等特性的,它是随着用户量的增加,基础架构才逐渐完善.这篇博文主要谈MySQL数据库发展周期中所面临的问题及优化方案,暂且抛开前端应用不说,大致分 ...
- erl0001-Erlang 设计原则 process port io
Erlang原理 (转载自ITEYE cryolite博客 ps:精彩)by Robert Virding This is a description of some of the basic pro ...
- windows 下FFMPEG的编译方法 附2012-9-19发布的FFMPEG编译好的SDK下载
经过一晚上加一上午的奋斗,终于成功编译出了最新版的FFMPEG,下面是我编译的心得,因为是最新的,应该会对大家有用,编译的FFMPEG的版本是0.11.2,2012-09-19新发布的版本 平台:WI ...
- MySQL压测中遇到的一些问题
批量insert http://blog.csdn.net/xiaoxian8023/article/details/20155429 Mysql jdbc 批处理数据,需要给jdbc连接加上rewr ...
- hdu 2155 小黑的镇魂曲(dp) 2008信息工程学院集训队——选拔赛
感觉蛮坑的一道题. 题意很像一个叫“是男人下100层”的游戏.不过多了个时间限制,要求在限定时间内从某一点下落到地面.还多了个最大下落高度,一次最多下落这么高,要不然会摔死. 一开始想dp的,然后想了 ...
- Oracle存储过程实现返回多个结果集 在构造函数方法中使用 dataset
原文 Oracle存储过程实现返回多个结果集 在构造函数方法中使用 dataset DataSet相当你用的数据库: DataTable相当于你的表.一个 DataSet 可以包含多个 DataTab ...
- [原创]C语言利用pcre正则表达式库
C语言使用正则表达式,可以利用pcre库,这个比较不错的哦. 在使用过程中,利用python进行测试正则表达式是否OK,后发现出现了问题.如下所示: regex.c:11:18: warning: u ...
- golang语言部分保留字的举例
golang和c的代码有很大不同的,一不小心就会误用. 1 /* go保留字: */ /* break default func interface select case defer go map ...
- 翻译【ElasticSearch Server】第一章:开始使用ElasticSearch集群(3)
运行ElasticSearch(Running ElasticSearch) 让我们运行我们的第一个实例.转到bin目录并从命令行运行以下命令: ./elasticsearch –f (Linux o ...
- POJ 1195- Mobile phones(二维BIT)
题意: 矩阵上的单点更新,范围求和 #include <map> #include <set> #include <list> #include <cmath ...