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).
------------------------------
本来是一道简单题目,我却想复杂了。。。
1:判断当前是否是元音;
2:如果不是元音的话,继续判断;
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");
}
}