题意:

按照给定的条件判断给出的邮箱地址是否合法。


Solution:

模拟。需要注意输入中可能包含空格。

空串不能作为symbol,因此prefix也不能包含连续和出现在首尾的'.'

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int n;
string s;
bool symbol (char c) {return c == '_' || (c >= '0' && c <= '9') || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || c == '-';
}
bool prefix (string s) {if (s.size() == 0) return 0;for (int i = 0, cnt = 0; i < s.size(); ++i) {if (s[i] == '.') {if ( i == 0 || i == s.size() - 1) return 0  ;else if (s[i + 1] == '.' || s[i - 1] == '.') return 0;}else if (!symbol (s[i]) ) return 0;}return 1;
}
int main() {cin >> n;getchar();while (n--) {getline (cin, s);bool ok = 1;int p = s.find ('@');if (p >= 0) {string t (s, 0, p);s.assign (s, p + 1, s.size() );if (!prefix (t) ) ok = 0;p = s.rfind ('.');if (p >= 0 && ok) {string t (s, 0, p);s.assign (s, p + 1, s.size() );if (!prefix (t) ) ok = 0;if (s.size() < 2 || s.size() > 3) ok = 0;for (int i = 0; i < s.size() && ok; ++i) {if (! ( (s[i] >= 'a' && s[i] <= 'z') || (s[i] >= 'A' && s[i] <= 'Z') ) ) ok = 0;}}else ok = 0;}else ok = 0;if (ok) puts ("YES");else puts ("NO");}
}

View Code

转载于:https://www.cnblogs.com/keam37/p/4485954.html

SGU 274 Spam-filter相关推荐

  1. [Spam]垃圾邮件者纲要(Spammer's Compendium)

    (中文文字来源于"中国数字部落(DIGIBLOG_ORG) - 无关紧要的消息":http://digiblog.org/) (p.s.:Spammer's Compendium用 ...

  2. Python菜鸟学习手册14----标准库+代码实例

    Python Standard Library 翻译: Python 江湖群 10/06/07 20:10:08 编译 0.1. 关于本书 0.2. 代码约定 0.3. 关于例子 0.4. 如何联系我 ...

  3. Python 模块大全(很详细!)

    转载:.... Python的模块大全,很全,有详细介绍! 另外附Python两个教程 1. Python详细教程(廖雪峰的官方网站,语言简洁!) 2. Python 进阶教程 (Vamei) 3. ...

  4. python 各种模块学习

    from:https://blog.csdn.net/weiwangchao_/article/details/70570508 转载:.... Python的模块大全,很全,有详细介绍! 另外附Py ...

  5. Python2.0 模块大全

    博客 学院 下载 更多 写博客 qq779488143 Python 模块大全(很详细!) 转载 2014年12月12日 20:47:18 标签: Python / 模块 / 教程 3694 转载:. ...

  6. postfix邮件安装配置文档

    POSTFIX邮局系统搭建全过程 第一篇:邮件系统搭建 一.系统环境: 1. 采用Centos 5.5系统也或者是rhel 5.5: 2. 内存最好为512M以上: 3. 本次采用的系统主机名为mai ...

  7. Live2009各产品(如MSN)强迫升级时Server2003系统失败的解决办法

    一.摘要 2月17日微软开始强制升级MSN等产品到Live 2009版本.不升级就不能再继续使用, 比如我的Beta版本的MSN2009就无法再登陆.但是悲剧是Server2003等操作系统上升级会提 ...

  8. The bag-of-words model

    (源自:http://en.wikipedia.org/wiki/Bag_of_words_model) The bag-of-words model is a simplifying assumpt ...

  9. python基础学习笔记(八)

    创建自已对象就python非常核心的概念,事实上,python被称为面向对象语言,本章会介绍如何创建对象.以及面向对象的概念:继承.封装.多态. 多态: 可对不同类的对象使用同样的操作. 封装:对外部 ...

最新文章

  1. php include request 区别
  2. 面向对象编程方法-抽象
  3. MongoDB学习day10--数据库导入导出
  4. 为确保网络中不同计算机,在计算机网络中,为确保网络中不同计算机之间能正确地传送和接收数据,它们必须遵循一组共同的规则和约定。这些规则、约定或标准通常被称为____。...
  5. 概率论与环境数理统计 20210222
  6. 冰河木马简易使用 ——病毒木马 003
  7. 定时获取AccessToken——萤石开放平台
  8. PMP49个过程组知识领域ITTO汇总 -- 项目采购管理
  9. 四季电台应用项目源码
  10. 1103 Integer Factorization (30分)
  11. 图形学:纹理寻址模式与UVTiling
  12. 37岁被裁员,出来再找工作,大公司不愿要,无奈去小公司面试,HR的话扎心了
  13. linuxcentos6笔记
  14. opencv学习手册(三)(线条识别)(更新中
  15. Apollo搭建使用
  16. 计算多项式的值编程c语言,Newton插值多项式计算函数的近似值
  17. 《第一堂棒球课》:王牌二垒手·棒球4号位
  18. 【目标检测】K-means计算anchors
  19. oracle数据库some,【案例】Oracle报错Some indexes or index [sub]partitions of table VAS.TAB_PUB_CALLLOG...
  20. 使用assembly插件打包maven项目

热门文章

  1. 拯救万千学子于水深火热之中!Facebook开源无梯度优化工具
  2. 李彦宏说互联网思维已过时,AI可以根本上变革交通、城市、农业和医疗
  3. Waymo无人出租车年底发射,现已进入定价环节 | 公交部门竟成友军?
  4. CMU科学家们带一群机器人开房,并收集了28,000种不同的姿势
  5. “Google只认钱!机器学习20年没进步”,CMU学者炮轰AI第一大厂
  6. Google开放最大目标检测数据集,还要为它举办AI挑战赛
  7. mysql 开发进阶篇系列 23 应用层优化与查询缓存
  8. POJ -- 1573 Robot Motion
  9. memcmp与strcmp区别
  10. 网络技术独立的×××-SDN和三个问题