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背包即可.需要注意的是本题只需要求解可以凑出几种金钱的价格,而不需要输出种数 ...
随机推荐
- A题笔记(3)
No. 1381 容器相关 #include <vector> 头文件 vector<Presents> present; present.push_back(name); 向 ...
- 2.Oracle11g体系结构
2.1逻辑存储结构 2.1.1数据块(Data Blocks) 数据块是Oracle逻辑结构中最小的逻辑单位,也是执行数据库输入输出最小的存储单位.通常Oracle数据库是操作系统块的整数倍,如果操作 ...
- LINQ 101——分组、Set、转换、Element
一.Grouping(分组) 例1:对于0-9数按被3整除的结果分组 代码: static void Linq1() { , , , , , , , , , }; var numModBy3 = fr ...
- 283. Move Zeroes(C++)
283. Move Zeroes Given an array nums, write a function to move all 0's to the end of it while mainta ...
- Windows Phone 之下拉菜单ListPicker
默认情况下,Visual Studio的ToolBox里没有任何下拉菜单的控件可供使用,虽然可以手工输入代码使用隐藏的ComboBox来实现下拉菜单,但是显示出来的菜单与Metro UI主题不匹配.S ...
- umask默认权限分配
umask默认权限分配的命令 当我们登录系统之后创建一个文件总是有一个默认权限的,那么这个权限是怎么来的呢?这就是umask干的事情.umask设置了用户创建文件的默认 权限,它与chmod的效果刚好 ...
- cookie : 存储数据
cookie : 存储数据,当用户访问了某个网站(网页)的时候,我们就可以通过cookie来像访问者电脑上存储数据 1.不同的浏览器存放的cookie位置不一样,也是不能通用的 2.cookie的存储 ...
- JavaScript拖拽
<!DOCTYPE html><html><head> <meta charset="utf-8"> <meta http-e ...
- spin.js插件的转圈加载效果
先上插件链接地址:http://fgnass.github.io/spin.js/ 以下是使用spin.js插件的完整版测试例子: <!doctype html> <html> ...
- ios 复制黏贴板的使用
在iOS中,可以使用剪贴板实现应用程序之中以及应用程序之间实现数据的共享.比如你可以从iPhone QQ复制一个url,然后粘贴到safari浏览器中查看这个链接的内容. 一.在iOS中下面三个控件, ...