TJU Easier Done than Said?
Password security is a tricky thing. Users prefer simple passwords that are easy to remember (like buddy ), but such passwords are often insecure. Some sites use random computer-generated passwords (like xvtpzyo ), but users have a hard time remembering them and sometimes leave them written on notes stuck to their computer. One potential solution is to generate "pronounceable" passwords that are relatively secure but still easy to remember.
FnordCom is developing such a password generator. You work in the quality control department, and it's your job to test the generator and make sure that the passwords are acceptable. To be acceptable, a password must satisfy these three rules:
- It must contain at least one vowel.
- It cannot contain three consecutive vowels or three consecutive consonants.
- It cannot contain two consecutive occurrences of the same letter, except for 'ee' or 'oo'.
(For the purposes of this problem, the vowels are 'a', 'e', 'i', 'o', and 'u'; all other letters are consonants.) Note that these rules are not perfect; there are many common/pronounceable words that are not acceptable.
The input consists of one or more potential passwords, one per line, followed by a line containing only the word 'end' that signals the end of the file. Each password is at least one and at most twenty letters long and consists only of lowercase letters. For each password, output whether or not it is acceptable, using the precise format shown in the example.
Sample Input
a
tv
ptoui
bontres
zoggax
wiinq
eep
houctuh
end
Sample Output
<a> is acceptable.
<tv> is not acceptable.
<ptoui> is not acceptable.
<bontres> is not acceptable.
<zoggax> is not acceptable.
<wiinq> is not acceptable.
<eep> is acceptable.
<houctuh> is acceptable.
题意概述:题目意思比较简单,如果看不懂,那说明真的该去补习一下英语了。题目意思,给定一个字符串,长度在1到20之间,包括1和20.需要满足3个条件才是可接受的,否则是不可接受的。条件一:必须含有一个元音字母;条件二:不能有连续三个元音或辅音字母;条件三:不能有连续两个相同字母,连续的oo和ee除外。
解题思路:用三个bool型变量分别表示三个条件是否成立。若字符串中有元音字母,则flag1=true;若没有连续的三个辅音或元音flag2=true;若没有连续两个相同的字母,flag3=true。对了,不能忘记字符串长度为1的情况,此时若为元音,则可以接受。
源代码:
#include<iostream>
#include<string>
using namespace std; bool isVowel(char c) //判断字符c是否为元音字母,是则返回true
{
bool flag=false;
if(c=='a')flag=true;
else if(c=='o')flag=true;
else if(c=='e')flag=true;
else if(c=='i')flag=true;
else if(c=='u')flag=true;
return flag;
} bool isSame(string s) //判断是否有连续两个相同字母,若没有则返回true
{
bool flag=true;
for(int i=0;i<s.size()-1;++i)
{
if(s[i]==s[i+1]&&s[i]!='e'&&s[i]!='o')
{
flag=false;
break;
}
}
return flag;
} int main()
{
int flag[20];
string s;
while(cin>>s&&s!="end")
{
bool flag1=false,flag2=false,flag3=true;
for(int i=0;i<20;++i) //用于存储相同类别的字母的长度
flag[i]=1;
if(s.size()==1&&isVowel(s[0]))cout<<'<'<<s<<'>'<<" is acceptable."<<endl; //长度为1的情况
else if(s.size()==1&&!isVowel(s[0]))cout<<'<'<<s<<'>'<<" is not acceptable."<<endl;
else if(s.size()>1) //长度大于1的情况
{
int flag1=false,flag2=true,flag3=true;
if(isVowel(s[0]))flag1=true;
for(int i=1;i<s.size();++i)
{
//若是元音字母,则是flag1=true
if(isVowel(s[i]))flag1=true;
//连续两个相同字母 ,则使对应的flag[i]=flag[i-1]+1
if( (isVowel(s[i-1])&&isVowel(s[i])) || (!isVowel(s[i-1])&&!isVowel(s[i])) )flag[i]=++flag[i-1];
//若相同类别的字母最大长度大于2,则使flag3=false,并退出循环
if(flag[i]>2){flag3=false;break;}
}
flag2=isSame(s); //判断是否有连续相同的字符
if(flag1 && flag2 && flag3)cout<<'<'<<s<<'>'<<" is acceptable."<<endl;
else cout<<'<'<<s<<'>'<<" is not acceptable."<<endl;
}
}
return 0;
}
TJU Easier Done than Said?的更多相关文章
- HBase官方文档
HBase官方文档 目录 序 1. 入门 1.1. 介绍 1.2. 快速开始 2. Apache HBase (TM)配置 2.1. 基础条件 2.2. HBase 运行模式: 独立和分布式 2.3. ...
- hdu 1039 Easier Done Than Said? 字符串
Easier Done Than Said? Time Limi ...
- ural 1356. Something Easier(数论,哥德巴赫猜想)
1356. Something Easier Time limit: 1.0 secondMemory limit: 64 MB “How do physicists define prime num ...
- (转)Is attacking machine learning easier than defending it?
转自:http://www.cleverhans.io/security/privacy/ml/2017/02/15/why-attacking-machine-learning-is-easier- ...
- TJU Problem 2857 Digit Sorting
原题: 2857. Digit Sorting Time Limit: 1.0 Seconds Memory Limit: 65536KTotal Runs: 3234 Accepted ...
- TJU 2248. Channel Design 最小树形图
最小树形图,測模版.... 2248. Channel Design Time Limit: 1.0 Seconds Memory Limit: 65536K Total Runs: 2199 ...
- HDU 1039.Easier Done Than Said?-条件判断字符串
Easier Done Than Said? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/O ...
- 1658: Easier Done Than Said?
1658: Easier Done Than Said? Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 15 Solved: 12[Submit][St ...
- HDU 1039.Easier Done Than Said?【字符串处理】【8月24】
Easier Done Than Said? Problem Description Password security is a tricky thing. Users prefer simple ...
随机推荐
- 633. Sum of Square Numbers【Easy】【双指针-是否存在两个数的平方和等于给定目标值】
Given a non-negative integer c, your task is to decide whether there're two integers a and bsuch tha ...
- 欧拉图 欧拉回路 欧拉通路 Euler
欧拉图 本文链接:http://www.cnblogs.com/Ash-ly/p/5397702.html 定义: 欧拉回路:图G的一个回路,如果恰通过图G的每一条边,则该回路称为欧拉回路,具有欧拉回 ...
- js数组,在遍历中删除元素
/** * 有效的方式 - 改变下标,控制遍历 */ for (var i = 0; i < arr.length; i++) { if (...) { arr.splice(i, 1); // ...
- ERROR 1044: Access denied for user: 'songyan' to database 'yikexiao' 的错误。
问题描述:新买的服务器,刚安装了mysql,创建了一个用户,也忘记了给他分配了什么权限,今天在建库的时候出现了这个问题. 出错原因:度娘告诉我是因为songyan用户没有建库的权限报的错. 解决: ( ...
- RequireJS 与 SeaJS 的异同
相同之处 RequireJS 和 SeaJS 都是模块加载器,倡导的是一种模块化开发理念,核心价值是让 JavaScript 的模块化开发变得更简单自然. 不同之处 两者的区别如下: 定位有差异.Re ...
- [典型漏洞分享]上传导致的应用层DOS攻击
YS 视频封面设置功能可上传大量图片,可进行资源消耗型DOS攻击[中] 问题描述: YS允许用户为设备设置封面,后台在处理时允许用户间接可控上传图片的二级路径以及直接可控保存图片的文 ...
- ArcGIS中影像与影像,影像与点云之间的配准
地图配准可分为影像配准和空间配准.影像配准的对象是raster图,譬如TIFF图.配准后的图可以保存为ESRI GRID, TIFF,或ERDAS IMAGINE格式.空间配准(Spatial Adj ...
- Thunderbird for Ubuntu
转自:http://www.cnblogs.com/slave_wc/archive/2011/05/02/2034529.html 装好ubuntu 的一般基本配置见本博客另一篇文章: Ubun ...
- Netty游戏服务器之五Unity3d登陆消息
今天我们来讲客户端Unity和服务器收发消息的具体过程. 首先,我们要在unity上搭建登陆界面的UI,这里呢,我用的是NGUI插件. 相信做过unity3d前端的都对这个非常的熟悉,最近官方的UGU ...
- Kubernetes下的应用监控解决方案
所谓应用监控,更多的是基于java jvm的监控,因为公司运行的中间件大部分都是基于tomcat,Springboot,SpringCloud,当然也必须支持WebLogic.在Kubernetes现 ...