1. 程式人生 > 其它 >java實戰7:判斷單詞構成

java實戰7:判斷單詞構成

技術標籤:javajava資料結構演算法字串intellij idea

java實戰7:判斷單詞構成

十一屆藍橋杯個人賽7.

還是寫完了之後看了看大佬寫的,還是不同思路,大佬匯入了好幾個包,用了一些特別的方法,我就還是最基本的方法,我哭,什麼時候我也能一做題這些常用方法能伸手就來呀,我是不是應該背背這些方法。

我感覺這題我的思路挺好的:
做題始終堅持一句話就好:複雜的問題也有簡單的規律,找到問題內部的聯絡就離成功不遠了。
本來我看這道題就覺得又感覺容易,實現又感覺複雜,不就是一組母音一組子音一組母音一組子音嗎,該怎麼實現呢。
後來我突然想到,只要在滿足第一位是母音的條件下,比較母音與子音交界的次數是3就行了

我把母音的sign賦1,子音的賦0,當出現相鄰的兩個sign不相等時,t+1,當t=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"); } } } }

執行結果:
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述