CF1008A - Romaji
Vitya has just started learning Berlanese language. It is known that Berlanese uses the Latin alphabet. Vowel letters are "a", "o", "u", "i", and "e". Other letters are consonant.
In Berlanese, there has to be a vowel after every consonant, but there can be any letter after any vowel. The only exception is a consonant "n"; after this letter, there can be any letter (not only a vowel) or there can be no letter at all. For example, the words "harakiri", "yupie", "man", and "nbo" are Berlanese while the words "horse", "king", "my", and "nz" are not.
Help Vitya find out if a word s
?is Berlanese.
Input
The first line of the input contains the string s
?consisting of |s|
?(1≤|s|≤100
) lowercase Latin letters.
Output
Print "YES" (without quotes) if there is a vowel after every consonant except "n", otherwise print "NO".
You can print each letter in any case (upper or lower).
------------------------------
本來是一道簡單題目,我卻想復(fù)雜了。。。
1:判斷當前是否是元音;
2:如果不是元音的話,繼續(xù)判斷;
3:如果是n,continue;
4:如果下一位還是輔音,則輸出NO,程序退出,(條件是當前的所以不能是最后一位)
下面是代碼:
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
public class A1008 {
? ? public static void main(String[] args) {
? ? ? ? Scanner sc=new Scanner(System.in);
? ? ? ? String s=sc.next();
? ? ? ? sc.close();
? ? ? ? Set<Character>v=new HashSet<>();
? ? ? ? v.add('a');
? ? ? ? v.add('e');
? ? ? ? v.add('i');
? ? ? ? v.add('o');
? ? ? ? v.add('u');
? ? ? ? char[]cs=s.toCharArray();
? ? ? ? for (int i = 0; i < cs.length; i++) {
? ? ? ? ? ? if(!v.contains(cs[i])){
? ? ? ? ? ? ? ? if(cs[i]=='n'){
? ? ? ? ? ? ? ? ? ? continue;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? if(i==cs.length-1||!v.contains(cs[i+1])){
? ? ? ? ? ? ? ? ? ? System.out.println("NO");
? ? ? ? ? ? ? ? ? ? return;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? System.out.println("YES");
? ? }
}