题意:判断一个字符串是不是有效的邮件地址。

题目链接: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的更多相关文章

  1. Codeforces Gym 100338B Spam Filter 字符串哈希+贝叶斯公式

    原题链接:http://codeforces.com/gym/100338/attachments/download/2136/20062007-winter-petrozavodsk-camp-an ...

  2. codeforces Gym 100338F Spam Filter 垃圾邮件过滤器(模拟,实现)

    阅读题, 概要:给出垃圾邮件和非垃圾邮件的集合,然后按照题目给出的贝叶斯公式计算概率一封邮件是垃圾邮件的概率. 逐个单词判断,将公式化简一下就是在垃圾邮件中出现的次数和在总次数的比值,大于二分之一就算 ...

  3. Linux服务器---邮件服务spam

    安装spam spam(SpamAssassin)利用perl来进行文字分析,他会检测邮件的标题.内容.送信人,这样就可以过滤出垃圾邮件 1.安装spam.由于spam的依赖太多,用户一定要使用yum ...

  4. Python Standard Library

    Python Standard Library "We'd like to pretend that 'Fredrik' is a role, but even hundreds of vo ...

  5. OSCP Learning Notes - Privilege Escalation

    Privilege Escalation Download the Basic-pentesting vitualmation from the following website: https:// ...

  6. 2016.09.14,英语,《Using English at Work》全书笔记

    半个月时间,听完了ESLPod出品的<Using English at Work>,笔记和自己听的时候的备注列在下面.准备把每个语音里的快速阅读部分截取出来,放在手机里反复听. 下一阶段把 ...

  7. python 各模块

    01 关于本书 02 代码约定 03 关于例子 04 如何联系我们 1 核心模块 11 介绍 111 内建函数和异常 112 操作系统接口模块 113 类型支持模块 114 正则表达式 115 语言支 ...

  8. python基础学习笔记5--对象

    对象(object) 1.对象(object): 面向对象程序设计重要术语. 对象的特性:多态性.封装性.继承性 >>def add(x,y): return x+y 对于很多类型的参数都 ...

  9. python学习笔记之六:更加抽象

    Python被称为面向对象的语言,创建自己的对象是python非常核心的概念.这里会介绍如何创建对象,以及多态,封装,方法,特性,超类以及继承的概念. 一. 对象的魔力 面向对象程序设计中的术语 对象 ...

随机推荐

  1. java常量池

    Java的堆是一个运行时数据区,类的(对象从中分配空间.这些对象通过new.newarray. anewarray和multianewarray等指令建立,它们不需要程序代码来显式的释放.堆是由垃圾回 ...

  2. ActionBarSherlock的学习笔记(四) ------------ ActionBarSherlock中的搜索及SearchView的使用

    在使用ActionBarSherlock定义app的头部操作时,会经常看见搜索的动作,本文主要介绍一下搜索是如何实现的. 1. SearchView 是搜索的核心组件,具体介绍请参考Android官方 ...

  3. Android01--开发环境搭建

    1 -- 下载所需软件 Android SDK下载地址:http://developer.android.com/sdk/index.html Eclipse下载地址:http://www.eclip ...

  4. .net 接口返回json格式示例

    1.新建 InterfaceTestPro1 项目: FILE - New - Project... - Web - ASP.NET Web Forms Application name:Interf ...

  5. C# 邮件发送系统

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  6. Json::Value使用心得

    Json::Value 是sourceforge开源项目jsoncpp的数据对象,用来处理json数据  下载 1.打印Json数据 Json::Value jv; Json::FastWriter ...

  7. c++与java的优缺点

      大多数程序员都认为C/C++会比Java语言快,甚至于觉得从Java语言诞生以来,"执行速度缓慢"的帽子就应当被扣在头顶,这种观点的出现是由于Java刚出现的时候JIT编译技术 ...

  8. Claim-based-security for ASP.NET Web APIs using DotNetOpenAuth

    Recently I worked with a customer assisting them in implementing their Web APIs using the new ASP.NE ...

  9. [LeetCode] Container With Most Water 简要分析

    前言 这题非要说贪心的话也算是吧,不过最主要的特征还是双指针.LC的题好像不少都是扔倆头尾指针然后遍历一遍完事儿的.这道题倒是“短板效应”的不错体现了. 题目 题目链接 Given n non-neg ...

  10. 读《HTML5与CSS3权威指南(上册)》笔记

    第二章 1.内容类型:“text/html”.DOCTYPE声明:<!DOCTYPE html>.指定字符编码:<meta charset="utf-8"> ...