HDU-1039-Easier Done Than Said?(Java && 没用正則表達式是我的遗憾.....)
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
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.
a
tv
ptoui
bontres
zoggax
wiinq
eep
houctuh
end
<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.
pid=1073" target="_blank" style="color:rgb(26,92,200); text-decoration:none">1073
pid=1043" target="_blank" style="color:rgb(26,92,200); text-decoration:none">1043
pid=1088" target="_blank" style="color:rgb(26,92,200); text-decoration:none">1088
1113import 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.");
} }
} }
)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 && 没用正則表達式是我的遗憾.....)的更多相关文章
- 黑马程序猿 ---------- Java网络技术之 ---正則表達式 (Day06)
---------------------- ASP.Net+Unity开发..Net培训.期待与您交流. ---------------------- 正則表達式 正則表達式:基本知识 1 字符, ...
- JAVA中正則表達式总结
昨天,我的朋友请教我正則表達式.我也好久没有写过正則表達式了,昨天刚好看了下如鹏网创始人杨中科老师关于正則表達式的解说.使我加深了正則表達式的印像.现我把他总结下: 很多语言,包含Perl.PHP.P ...
- JAVA中正則表達式总结(具体解释及用途)
很多语言,包含Perl.PHP.Python.JavaScript和JScript,都支持用正則表達式处理文本,一些文本编辑器用正則表達式实现高级"搜索-替换"功能.所以JAVA语 ...
- Java正則表達式入门
众所周知,在程序开发中,难免会遇到须要匹配.查找.替换.推断字符串的情况发生,而这些情况有时又比較复杂,假设用纯编码方式解决,往往会浪费程序猿的时间及精力.因此,学习及使用正則表達式,便成了解决这一 ...
- Java正則表達式语法
Java正則表達式语法 字符 说明 \ 将下一字符标记为特殊字符.文本.反向引用或八进制转义符.比如,"n"匹配字符"n"."\n"匹配换行 ...
- Java正則表達式
近期工作中常常要用到正則表達式,不得不花点时间对其进行一定的学习. JDK中提供了2个类来支持正則表達式,各自是java.util.regex.Pattern和java.util.regex.Ma ...
- Java正則表達式演示样例
import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexMatches { public s ...
- java正則表達式的坑
java中正則表達式比較有意思,这里列举几个常见的坑 1.[]符号,中括号表示当中的数据都是或的关系 假设[\\w+]是匹配条件 abc能否够匹配的到呢? 首先\\w(注意这里没有中括号)表示a-z ...
- paip.java UrlRewrite 的原理and实现 htaccess正則表達式转换
paip.java UrlRewrite 的原理and实现 htaccess正則表達式转换 #---KEYWORD #-正則表達式 正則表達式 表示 非指定字符串开头的正则 排除指定文件夹.. 作者 ...
随机推荐
- django 时间计数
value必须replace(tzinfo=None)变成datetime格式,否则格式不对不能相减.
- 数据结构C语言版 有向图的十字链表存储表示和实现
/*1wangxiaobo@163.com 数据结构C语言版 有向图的十字链表存储表示和实现 P165 编译环境:Dev-C++ 4.9.9.2 */ #include <stdio.h> ...
- Linux下查看二进制文件命令
一.在Linux下查看二进制文件的软件: xxd hexdump 二.编辑: 1.biew 2.hexedit 3.vim Vim 来编辑二进制文件.Vim 本非为此而设计的,因而有若干局限.但你能读 ...
- 全球在一个 level 上思考的价值观和想法是一样的(转)
近日,福布斯中文版总编辑周建工对话马云,谈到腾讯频繁的大笔收购,马云点评称腾讯收购的所有的案子,老百性都看得懂,这就错了.战略就像买股票一样,如果老太太都开始买股票了,一定有问题. 以下是对话内容,转 ...
- 组件接口(API)设计指南-文件夹
组件接口(API)设计指南-文件夹 组件接口(API)设计指南[1]-要考虑的问题 组件接口(API)设计指南[2]-类接口(class interface) 组件接口(API)设计指南[3]-托付( ...
- Python笔记之基本的语法
1 变量和赋值 Python是动态类型语言,不须要预先声明变量的类型.变量的类型在赋值的那一刻被初始化. Python变量名是大写和小写敏感的,即"cAsE"与"CaSe ...
- 使用gson(一)
1.数组和json的转换 package com.test.gson; import com.google.gson.Gson; public class ArrayToJson { public s ...
- BZOJ 1854: [Scoi2010]游戏( 二分图最大匹配 )
匈牙利算法..从1~10000依次找增广路, 找不到就停止, 输出答案. --------------------------------------------------------------- ...
- ecosphere是什么意思_ecosphere的翻译_音标_读音_用法_例句 - 必应 Bing 词典
ecosphere是什么意思_ecosphere的翻译_音标_读音_用法_例句 - 必应 Bing 词典 ecosphere
- URAL 1792. Hamming Code (枚举)
1792. Hamming Code Time limit: 1.0 second Memory limit: 64 MB Let us consider four disks intersectin ...