Easier Done Than Said?

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 9845    Accepted Submission(s): 4784

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.
 
Source




 
Recommend


题目说了非常多废话。说什么设置password是什么复杂的事情啦,设置过于简单也不行。没有规律又不好记忆,总之它的意思是说,你要满足它设置password的三个条件,满足则给你acceptable否则给你not acceptable。(三个条件在凝视里面......)

由于题目过于水。并且英文也较好理解(题意还是比較清晰明了的),这里不做过多解释,Java水过......

import java.io.*;
import java.util.*; public class Main
{ public static void main(String[] args)
{
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
while (input.hasNext())
{
boolean flag1 = false, flag2 = true, flag3 = true;
String str = input.next();
if (str.endsWith("end"))
break;
char c[] = str.toCharArray(); // 第一个条件:必须包括至少一个元音字母
for (int i = 0; i < c.length; i++)
{
if (c[i] == 'a' || c[i] == 'e' || c[i] == 'i' || c[i] == 'o'
|| c[i] == 'u')
{
flag1 = true;
break;
}
} // 第二个条件:不能包括三个连续的元音字母或者三个连续的辅音字母
int a = 0, b = 0;
for (int i = 0; i < c.length; i++)
{
if (c[i] == 'a' || c[i] == 'e' || c[i] == 'i' || c[i] == 'o'
|| c[i] == 'u')
{
a++;
if (a >= 3)
{
flag2 = false;
}
b = 0;
}
else
{
b++;
if (b >= 3)
{
flag2 = false;
}
a = 0;
}
} // 第三个条件:不能包括两个连续同样的字母,除了'ee'和'oo'这两种情况除外
int i, j = 0;
for (i = 1; i < c.length; i++, j++)
{
if (c[i] == c[j])
{
if (c[i] == 'e' || c[i] == 'o')
continue;
else
{
flag3 = false;
break;
}
}
} if (flag1 && flag2 && flag3)
{
System.out.println("<" + str + "> is acceptable.");
}
else
{
System.out.println("<" + str + "> is not acceptable.");
} }
} }

另外围观王维大牛正則表達式Pattern和Matcher(本来想用这题来练正則表達式的.....可是我还是没搞懂啊

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern; public class Main {
public static void main(String[] args) throws Exception {
Scanner cin = new Scanner(System.in);
while (cin.hasNext()) {
String str = cin.next();
if(str.equals("end"))
break;
Pattern p1 = Pattern.compile("[aeiou]{3}|[^aeiou]{3}");
Pattern p2 = Pattern.compile("([a-df-np-z])\\1");
Pattern p3 = Pattern.compile("[aeiou]+");
Matcher m = p1.matcher(str);
boolean flag = false;
if(!m.find())
{
m = p2.matcher(str);
if(!m.find())
{
m = p3.matcher(str);
if(m.find())
flag = true;
}
}
if(flag)
System.out.println("<"+str+"> is acceptable.");
else
System.out.println("<"+str+"> is not acceptable.");
}
cin.close();
}
}


 

HDU-1039-Easier Done Than Said?(Java &amp;&amp; 没用正則表達式是我的遗憾.....)的更多相关文章

  1. 黑马程序猿 ---------- Java网络技术之 ---正則表達式 (Day06)

    ---------------------- ASP.Net+Unity开发..Net培训.期待与您交流. ---------------------- 正則表達式 正則表達式:基本知识 1  字符, ...

  2. JAVA中正則表達式总结

    昨天,我的朋友请教我正則表達式.我也好久没有写过正則表達式了,昨天刚好看了下如鹏网创始人杨中科老师关于正則表達式的解说.使我加深了正則表達式的印像.现我把他总结下: 很多语言,包含Perl.PHP.P ...

  3. JAVA中正則表達式总结(具体解释及用途)

    很多语言,包含Perl.PHP.Python.JavaScript和JScript,都支持用正則表達式处理文本,一些文本编辑器用正則表達式实现高级"搜索-替换"功能.所以JAVA语 ...

  4. Java正則表達式入门

     众所周知,在程序开发中,难免会遇到须要匹配.查找.替换.推断字符串的情况发生,而这些情况有时又比較复杂,假设用纯编码方式解决,往往会浪费程序猿的时间及精力.因此,学习及使用正則表達式,便成了解决这一 ...

  5. Java正則表達式语法

    Java正則表達式语法 字符 说明 \ 将下一字符标记为特殊字符.文本.反向引用或八进制转义符.比如,"n"匹配字符"n"."\n"匹配换行 ...

  6. Java正則表達式

    近期工作中常常要用到正則表達式,不得不花点时间对其进行一定的学习.   JDK中提供了2个类来支持正則表達式,各自是java.util.regex.Pattern和java.util.regex.Ma ...

  7. Java正則表達式演示样例

    import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexMatches { public s ...

  8. java正則表達式的坑

    java中正則表達式比較有意思,这里列举几个常见的坑 1.[]符号,中括号表示当中的数据都是或的关系 假设[\\w+]是匹配条件 abc能否够匹配的到呢? 首先\\w(注意这里没有中括号)表示a-z ...

  9. paip.java UrlRewrite 的原理and实现 htaccess正則表達式转换

    paip.java UrlRewrite 的原理and实现 htaccess正則表達式转换 #---KEYWORD #-正則表達式 正則表達式 表示 非指定字符串开头的正则 排除指定文件夹.. 作者 ...

随机推荐

  1. 用Verilog实现IIC通讯

    注意,此代码是错误代码,并不能实现想要的结果. 之所以留着,因为里面的enable 是独立开来的思想值得借鉴.就是控制单元和运算单元分开(我也是借鉴别人的实现思想).具体用verilogHDL实现II ...

  2. ognl--数据运转的催化剂

    原文链接:http://struts2.group.iteye.com/group/wiki/1353-ognl-catalyst-for-data-operation-in-struts2 首先让我 ...

  3. IE6/7/8 CSS兼容性问题和解决方法汇总

    断断续续的在开发过程中收集了好多的bug以及其解决的办法,都在这个文章里面记录下来了!希望以后解决类似问题的时候能够快速解决,也希望大家能在留言里面跟进自己发现的ie6 7 8bug和解决办法! 1: ...

  4. Global文件(修正篇)

    什么是Global文件 Global.asax文件俗称为一个类,继承于Httpapplication类.位于应用程序根目录下.也可称为应用程序文件. 概述: Global文件是可选的,一般在创建应用程 ...

  5. Android蓝牙A2dp profile的使用

    A2dp profile是android支持的一种蓝牙情景模式,一般用于蓝牙立体声耳机,即蓝牙音频的输出 在android的app层中,A2dp的使用并不是很开放,api只提供了非常少的操作接口,连基 ...

  6. VMware Workstation 9.0 安装苹果Mac OS X10.9系统

    摘自:http://www.wuwenhui.cn/3133.html 一.安装所需要的软件: 1.VMware Workstation 9.0 点击下载 2.unlock-all-v110.zip  ...

  7. C++中实现对map按照value值进行排序 - 菜鸟变身记 - 51CTO技术博客

    C++中实现对map按照value值进行排序 - 菜鸟变身记 - 51CTO技术博客 C++中实现对map按照value值进行排序 2012-03-15 15:32:36 标签:map 职场 休闲 排 ...

  8. 11gOCP 1z0-052 :2013-09-11 MGR_ROLE role........................................................A66

    转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/11584537 正确答案A 实验测试 1.创建用户:SKD gyj@OCM> crea ...

  9. Android屏幕大小适配问题解决

    转载: 一.一些基本概念 1.长度(真实长度):英寸.inch 2.分辨率:density 每英寸像素数  dpi(密度) 3.像素:px 4.dip的公式:px /dip=dpi/160  所以 d ...

  10. js获取网页屏幕可见区域高度

    document.body.clientWidth ==> BODY对象宽度 document.body.clientHeight ==> BODY对象高度 document.docume ...