hdu1039 java正则表达式解法
来源:互联网 发布:ubuntu安装deepin桌面 编辑:程序博客网 时间:2024/05/19 18:46
Easier Done Than Said?
题意就是测试一段字符串是否满足下面三个条件:
(1)至少含有一个元音(a、e、i、o、u)
(2)不能连续三个是元音,也不能连续三个是非元音
(3)不能有连续两个字母是相同的,但是ee和oo除外
默认情况下,给出的字符串只含有小写字母。
当然这道题目用c++,解起来也不是很困难的,这次用java主要是练习正则表达式。
java代码是:
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("([^eo])\\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.");elseSystem.out.println("<"+str+"> is not acceptable.");}cin.close();}}
关于正则式:
[aeiou]{3}|[^aeiou]{3} 三个连续元音,或者三个连续非元音
([^eo])\\1在字符串中 \ 要进行转义所以要写 \\ 来代表 \ 意思是两个连续元音除(ee,oo)。这个写法([a-df-np-z])\\1 比较丑,呵呵.
()表示分组,和\1连用。\1表示对前面第一个匹配到的组的一个引用,也就是 相同的效果。比如(a)\1和(a)(a)同样意思。
[aeiou]+ 匹配至少有一个元音。+是一个或多个,*是0个或多个,?是0个或1个
3 0
- hdu1039 java正则表达式解法
- hdu1039
- HDU1039
- hdu1039
- hdu1039
- HDU1039
- hdu1039
- 通配符、正则表达式的回溯解法
- Java 正则表达式正则
- 【正则表达式】Java正则表达式
- 正则表达式 JAVA正则表达式
- 【Java】【正则表达式】正则表达式
- HDU1039 Easier Done Than Said?(java)
- Java 正则表达式详解_正则表达式
- java正则表达式!正则表达式踩坑!!!
- 正则表达式工具类,正则表达式封装,Java正则表达式
- Java正则表达式详解
- Java正则表达式详解
- “关于COPY TO 的一点疑问”的再讨论
- Oracle把表放到内存中
- 【MySQL数据库开发之一】Mac下配置安装数据库-MySQL
- FW: Getting Started with ASP.NET MVC 5
- 《STL源码剖析》学习--traits
- hdu1039 java正则表达式解法
- 【Android】Intent传递对象数组
- Linux内核链表浅析及简单运用
- 好记性不如烂博客
- iOS学习6:CoreGraphics简单绘图
- Hibernate配置详细解释
- java环境变量详解---找不到或无法加载主类
- 三位水仙花数3
- py2exe