Java实现蓝桥杯模拟给定一个单词判断

问题描述
小明对类似于 hello 这种单词非常感兴趣,这种单词可以正好分为四段,
第一段由一个或多个辅音字母组成,
第二段由一个或多个元音字母组成,
第三段由一个或多个辅音字母组成,
第四段由一个或多个元音字母组成。
给定一个单词,请判断这个单词是否也是这种单词,如果是请输出yes,否则请输出no。
元音字母包括 a, e, i, o, u,共五个,其他均为辅音字母。
输入格式
输入一行,包含一个单词,单词中只包含小写英文字母。
输出格式
输出答案,或者为yes,或者为no。
样例输入
lanqiao
样例输出
yes
样例输入
world
样例输出
no

 

        static char arr1[] = {'a','e','i','o','u'};//元音
	static char arr2[] = {'b','c','d','f','g','h','j','k','l','m','n','p','q','r','s','t','v','w','x','y','z'};
	
	public static void main(String[] args) {
		int index = 0;
		boolean flg = false;
		boolean flg2 = false;
		
		boolean flg11 = false;
		boolean flg22 = false;
		boolean flg33 = false;
		boolean flg44 = false;
		
		String input = new Scanner(System.in).nextLine();
		char[] arr3 = input.toCharArray();
		
		for (int i = 0; i < arr3.length; i++) {
			for (int j = 0; j < arr2.length; j++) {
				if(arr3[i]==arr2[j]) {
					index++;
					flg = true;
					flg11 = true;
				}
				for (int j2 = 0; j2 < arr1.length; j2++) {
					if(arr3[i] == arr1[j2]) {
						flg2 = true;
					}
				}
			}
			
			if(flg2) {
				flg2 = false;
				break;
			}
		}
		if(flg) {
			flg = false;
			for (int i = index; i < arr3.length; i++) {
				for (int j = 0; j < arr1.length; j++) {
					if(arr3[i]==arr1[j]) {
						index++;
						flg = true;
						flg22 = true;
					}
					for (int j2 = 0; j2 < arr2.length; j2++) {
						if(arr3[i] == arr2[j2]) {
							flg2 = true;
						}
					}
				}
				
				if(flg2) {
					flg2 = false;
					break;
				}
			}
		}
		if(flg) {
			flg = false;
			for (int i = index; i < arr3.length; i++) {
				for (int j = 0; j < arr2.length; j++) {
					if(arr3[i]==arr2[j]) {
						index++;
						flg = true;
						flg33 = true;
					}
					for (int j2 = 0; j2 < arr1.length; j2++) {
						if(arr3[i] == arr1[j2]) {
							flg2 = true;
						}
					}
				}

				if(flg2) {
					flg2 = false;
					break;
				}
			}
		}
		if(flg) {
			flg = false;
			for (int i = index; i < arr3.length; i++) {
				for (int j = 0; j < arr1.length; j++) {
					if(arr3[i]==arr1[j]) {
						index++;
						flg = true;
						if(index == arr3.length) {
							flg44 = true;
						}
					}
					for (int j2 = 0; j2 < arr2.length; j2++) {
						if(arr3[i] == arr2[j2]) {
							flg2 = true;
						}
					}
				}

				if(flg2) {
					flg2 = false;
					break;
				}
			}
		}
		if(flg11&&flg22&&flg33&&flg44) {
			System.out.println("yes");
		}else {
			System.out.println("no");
		}

不理解地方还请评论。

 

官方解答,正则表达式,我是小白,不要喷我。


	static Pattern p = Pattern.compile("[^aeiou]+[aeiou]+[^aeiou]+[aeiou]+");
	static Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		if (work())
			System.out.println("yes");
		else
			System.out.println("no");
	}

	static boolean work() {
		String word = sc.nextLine();
		Matcher m = p.matcher(word);
		return m.matches();
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值