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'.(除了“ee”或“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.(就这个问题而言,元音是‘a’、‘e’、‘i’、‘o’和‘u’;所有其他字母都是辅音。)请注意,这些规则并不完美;有许多常见/可读的单词是不可接受的。

 

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.

 

我的解题思路

1.对于上述三个条件,每个条件设置一个布尔类型,若三个同时满足则输出正确,反之则错误。

2.把输入的字符串转换为字符数组,更容易比较。

3.用一个布尔类型的类来判断每个数组中的字符是否有元音字母。

4.条件2,3调用类来判断是否符合,条件二比较连续的三个字符是否相同元音或辅音,条件三比较连续相同两个字符是否是除e和o以外的字符。

 

我的程序

import java.util.Scanner;
public class Main {
	public static boolean isyuan(char s){
		char[] yuan={'a','e','i','o','u'};
		for(int i=0;i<5;i++)
			if(yuan[i]==s)
				return true;
		return false;	
	}
	public static void main(String[] args) {
		Scanner scanner =new Scanner(System.in);
		while(scanner.hasNext()){
			String string = scanner.next();
			if(string.equals("end"))
				break;
			int len=string.length();
			char[] str = string.toCharArray();
			boolean tag1=false,tag2=true,tag3=true;
			for(int i=0;i<len;i++)
				if(isyuan(str[i])){
					tag1=true;
					break;
				}
			if(tag1){
				for(int i=0;i<len-2;i++){
					if((isyuan(str[i])&&isyuan(str[i+1])&&isyuan(str[i+2]))||(!isyuan(str[i])&&!isyuan(str[i+1])&&!isyuan(str[i+2]))){
						tag2=false;
						break;
					}
				}
			}
			if(tag2&&tag1){
				for(int i=0;i<len-1;i++){
					if(str[i]==str[i+1]){
						if(str[i]!='e'&&str[i]!='o'){
							tag3=false;
							break;
						}
					}
				}
			}
			if(tag1&&tag2&&tag3)
				System.out.println("<"+string+">"+" is acceptable.");
			else {
				System.out.println("<"+string+">"+" is not acceptable.");
			}
		}
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值