Java戦闘7:単語構成を判断する

Java戦闘7:単語構成を判断する

第11回ブルーブリッジカップ個人大会7。

書き終えた後、上司が書いたものを見ました。それはまだ別の考えでした。上司はいくつかのパッケージをインポートし、いくつかの特別な方法を使用しました。私はまだ最も基本的な方法でした。私は泣きました。問題が発生するたびにこれらは一般的に使用した方法はできるだけ早く到達できます。これらの方法を覚えておく必要があります。

この質問に対する私の考えは非常に良いと思います。質問をする
ときは常に1つの文に固執するのが良いです。複雑な問題にも単純なルールがあり、問題の内部接続を見つけることは成功からそう遠くはありません。
もともと、この質問は簡単で複雑だと思っていましたが、母音のグループ、子音のグループ、母音のグループ、子音のグループだけではないのですが、どうすれば実現できますか?
後で突然、最初の母音が母音であれば、母音と子音の接合部が3回
あれば十分だと思いました母音の符号を1に、子音が0に割り当てます。隣接する2つの符号が等しくない場合、t + 1、t = 3の場合、要件が満たされていることを意味します。

元の質問:
[問題の説明]
Xiao Mingは、4つの段落に分割できるhelloのような単語に非常に興味があります。最初の段落は1つ以上の子音で構成され、2番目の段落は1つ以上の要素で構成されます。3番目の段落段落は1つ以上の子音で構成され、4番目の段落は1つ以上の母音で構成されます。
単語が与えられたら、この単語がこの種の単語でもあるかどうかを判断してください。そうである場合は「はい」を出力し、そうでない場合は「いいえ」を出力してください。
a、e、i、o、uを含む5つの母音があり、その他はすべて子音です。
【入力形式】
1単語を含む1行を入力し、その単語には小文字の英字のみを含みます。
【出力形式】
「はい」または「いいえ」の回答を出力します
[サンプル入力]
lanqiao
[サンプル出力]
はい
[サンプル入力]
world
[サンプル出力]
いいえ
[評価ユースケースのスケールと規則]
すべての評価ユースケースで、単語の文字数は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");
            }
        }
    }
}

演算結果:
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_46020391/article/details/112350991