HDOJ/HDU 1039 Easier Done Than Said?(字符串处理~)
Problem Description
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.
Input
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.
Output
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.
题意:
密码必须满足这三个规则:
它必须包含至少一个元音。
它不能包含三个连续的元音或三个辅音。
它不能包含两个连续的相同的字母,除了“EE”或“oo”。
(为了这个问题,元音“A”、“E”、“我”、“O”、和“U”;其他所有的字母都是辅音字母。)注意,这些规则是不完善的;有很多常用的发音的话,是不可接受的。
输入end结束输入~不需要输出。
满足的输出:** is acceptable.
否则输出:** is not acceptable.
import java.util.Scanner;
public class Main{
static String[] vowel = {"a","e","i","o","u"};
static String[] eq = {"aa","bb","cc","dd","ff","gg","hh","ii","jj","kk","ll","mm",
"nn","pp","qq","rr","ss","tt","uu","vv","ww","xx","yy","zz"};
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
String str=sc.next();
if("end".equals(str)){
return;
}
boolean isAcceptable=true;
int num=-1;
for(int i=0;i<vowel.length;i++){
if(num==-1){
num=str.indexOf(vowel[i]);
}
}
if(num==-1){
System.out.println("<"+str+">"+" is not acceptable.");
continue;
}
for(int i=0;i<eq.length;i++){
if(str.indexOf(eq[i])!=-1){
isAcceptable=false;
break;
}
}
if(!isAcceptable){
System.out.println("<"+str+">"+" is not acceptable.");
continue;
}
for(int i=0;i<str.length()-2;i++){
int Vowel1=0;
int Vowel2=0;
int Vowel3=0;
for(int k=0;k<vowel.length;k++){
if(str.charAt(i)==vowel[k].charAt(0)){
Vowel1=1;
}
}
for(int k=0;k<vowel.length;k++){
if(str.charAt(i+1)==vowel[k].charAt(0)){
Vowel2=1;
}
}
for(int k=0;k<vowel.length;k++){
if(str.charAt(i+2)==vowel[k].charAt(0)){
Vowel3=1;
}
}
if(Vowel1==Vowel2&&Vowel1==Vowel3){
isAcceptable=false;
break;
}
}
if(!isAcceptable){
System.out.println("<"+str+">"+" is not acceptable.");
continue;
}
System.out.println("<"+str+">"+" is acceptable.");
}
}
}
HDOJ/HDU 1039 Easier Done Than Said?(字符串处理~)的更多相关文章
- hdu 1039 Easier Done Than Said? 字符串
Easier Done Than Said? Time Limi ...
- HDU 1039.Easier Done Than Said?-条件判断字符串
Easier Done Than Said? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/O ...
- HDU 1039.Easier Done Than Said?【字符串处理】【8月24】
Easier Done Than Said? Problem Description Password security is a tricky thing. Users prefer simple ...
- 题解报告:hdu 1039 Easier Done Than Said?
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1039 Problem Description Password security is a trick ...
- HDU 1039 -Easier Done Than Said?
水水的 #include <iostream> #include <cstring> using namespace std; ]; bool flag; int vol,v2 ...
- HDOJ(HDU).1412 {A} + {B} (STL SET)
HDOJ(HDU).1412 {A} + {B} (STL SET) 点我挑战题目 题意分析 大水题,会了set直接用set即可. 利用的是set的互异性(同一元素有且仅有一项). #include ...
- HDOJ(HDU).1754 I Hate It (ST 单点替换 区间最大值)
HDOJ(HDU).1754 I Hate It (ST 单点替换 区间最大值) 点我挑战题目 题意分析 从题目中可以看出是大数据的输入,和大量询问.基本操作有: 1.Q(i,j)代表求区间max(a ...
- HDOJ(HDU).1166 敌兵布阵 (ST 单点更新 区间求和)
HDOJ(HDU).1166 敌兵布阵 (ST 单点更新 区间求和) 点我挑战题目 题意分析 根据数据范围和询问次数的规模,应该不难看出是个数据结构题目,题目比较裸.题中包括以下命令: 1.Add(i ...
- HDOJ(HDU).2844 Coins (DP 多重背包+二进制优化)
HDOJ(HDU).2844 Coins (DP 多重背包+二进制优化) 题意分析 先把每种硬币按照二进制拆分好,然后做01背包即可.需要注意的是本题只需要求解可以凑出几种金钱的价格,而不需要输出种数 ...
随机推荐
- 在C#中实现Socket端口复用
转载:http://www.csharpwin.com/csharpspace/68.shtml 一.什么是端口复用: 因为在winsock的实现中,对于服务器的绑定是可以多重绑定的,在 ...
- HttpServletRequest 获取URL的方法及区别
HttpServletRequest 获取请求的URL的方法有: 1.request.getRequestURL() 返回的是完整的url,包括Http协议,端口号,servlet名字和映射路径,但它 ...
- Eclipse快捷键,前几个很实用
F3 :查看实现 F4(或control + T) :继承树 control + F6 :切换文件 control + F7 :切换视图 control + F8 :切换模板 control + O ...
- 转:Android软件开发之PreferenceActivity中的组件
本文转于 “雨松MOMO的程序世界” 博客,请务必保留此出处http://xys289187120.blog.51cto.com/3361352/656784 1.PreferenceActivity ...
- JavaScript 删除数组重复元素
unique :function (array){ var n = {}, r = [], len = array.length, val, type; for (var i = 0; i < ...
- QT UI 使一个QWidget里面的元素自动填充满本QWidget
使一个QWidget里面的元素自动填充满本QWidget: 对象查看器,右键点击本QWidget,选择"布局",为此QWidget增加一个布局. 如果该QWidget只有一个对象, ...
- 【PHP】 foreach循环中变量引用的一道面试题
$a = array('a','b','c'); foreach($a as &$v){} foreach($a as $v){ } var_dump($a); 现在.不要打开浏览器,猜测一下 ...
- QTableView使用自定义委托(QItemDelegate)
需要在表格中绘制流程图,主要有箭头,方向,颜色,字符串,由于QTableView没有可用的绘制函数,所以需要自己去定义. 委托(delegate)继承QItemDelegate,模型(model)继承 ...
- [CSS]cursor鼠标样式
用css控制鼠标样式的语法如下: <span style="cursor:*">文本或其它页面元素</span> 把 * 换成如下15个效果的一种: ...
- 在Swift中使用libxml2
// // main.swift // C150805_libxml2r2 // http://git.oschina.net/yao_yu/Swift2015/tree/master/C150805 ...