java實戰7:判斷單詞構成
阿新 • • 發佈:2021-01-13
技術標籤:javajava資料結構演算法字串intellij idea
java實戰7:判斷單詞構成
十一屆藍橋杯個人賽7.
還是寫完了之後看了看大佬寫的,還是不同思路,大佬匯入了好幾個包,用了一些特別的方法,我就還是最基本的方法,我哭,什麼時候我也能一做題這些常用方法能伸手就來呀,我是不是應該背背這些方法。
我感覺這題我的思路挺好的:
做題始終堅持一句話就好:複雜的問題也有簡單的規律,找到問題內部的聯絡就離成功不遠了。
本來我看這道題就覺得又感覺容易,實現又感覺複雜,不就是一組母音一組子音一組母音一組子音嗎,該怎麼實現呢。
後來我突然想到,只要在滿足第一位是母音的條件下,比較母音與子音交界的次數是3就行了
原題:
【問題描述】
小明對類似於 hello 這種單詞非常感興趣,這種單詞可以正好分為四段,第一段由一個或多個子音字母組成,第二段由一個或多個母音字母組成,第三段由一個或多個子音字母組成,第四段由一個或多個母音字母組成。
給定一個單詞,請判斷這個單詞是否也是這種單詞,如果是請輸出yes,否則請輸出no。
母音字母包括 a, e, i, o, u,共五個,其他均為子音字母。
【輸入格式】
輸入一行,包含一個單詞,單詞中只包含小寫英文字母。
【輸出格式】
輸出答案,或者為yes,或者為no。
lanqiao
【樣例輸出】
yes
【樣例輸入】
world
【樣例輸出】
no
【評測用例規模與約定】
對於所有評測用例,單詞中的字母個數不超過100。
程式碼如下:
import java.util.Scanner;
public class blueSelf_7 {
public static void main(String[] args){
Scanner reader=new Scanner(System.in);
char[] c;
int asign=0;//用途類似於指標,用它進行陣列後移位
String s= reader.next();
c=new char[s.length()];
for(int i=0;i<s.length();i++){
c[i]=s.charAt(i);
}
int[] sign=new int[s.length()];
for(int i=0;i<s.length();i++){
switch(c[i]){
case 'a': case 'e': case'i': case 'o': case'u':sign[i]=1;break;
case 'b': case 'c': case'd': case 'f': case'g':case 'h': case 'j': case'k': case 'l': case'm':case 'n': case 'p': case'q': case 'r': case's':case 't': case 'v': case'w': case 'x': case'y':case'z':sign[i]=0;break;
}
//System.out.printf("%d ",sign[i]);//輸出標記
}
int t=0;//計數
//判斷第一位是不是母音
if(sign[0]!=0){
System.out.println("no");
}
else {
while (asign < s.length()-1) {//max=3
if (sign[0] != 0) {
System.out.println("no");
}
else if ((sign[asign] == sign[asign + 1]) && (sign[asign] == 0)) {
asign = asign + 1;
}
else if ((sign[asign] == sign[asign + 1]) && (sign[asign] == 1)) {
asign = asign + 1;
}
//交界,t+1;
else {
t++;
asign++;
}
}
if(t==3){
System.out.println("yes");
}
else{
System.out.println("no");
}
}
}
}
執行結果: