1

初心者のImで、この単語検索で何が間違っているのか誰かに教えてもらえないかと思っていました。imは、仮引数で指定された単語について各行をチェックすることに固執しました。現在、配列の行内で単語が見つかった場合にtrueを返す基本的なブールメソッドのjstは、どのような種類のチェックも行いません。単語検索配列を想定しています。長方形です

    public boolean checkRow( char[][] puzzle, String w)
{
    int counter = 0;
    boolean match = true;
    for ( int row = 0; row < puzzle.length; row++)
    {
        counter = 0;


        for ( int col = 0; col < puzzle[row].length; col++)
        {
            if ( counter <= w.length() )
            {
                char word = puzzle[row][col];


                if( w.charAt(counter) == word)
                {
                    match = true;
                    counter++;
                }
            }


            else if ((counter == w.length()) && (match == true))
            {
                return true;
            }


             else 
            {

                match = false;
                counter = 0;
            }



        }
    }


    return match;
}
4

1 に答える 1

2

これが修正されたコードです

public boolean checkRow(char[][] puzzle, String w) {
    int counter = 0;
    boolean match = true;
    for (int row = 0; row < puzzle.length; row++) {
        counter = 0;
        match = false;

        for (int col = 0; col < puzzle[row].length; col++) {
            if (counter < w.length()) {
                char word = puzzle[row][col];

                if (w.charAt(counter) == word) {
                    match = true;
                    counter++;
                } else {
                    match = false;
                    counter = 0;
                }

                if ((counter == w.length()) && (match == true)) {
                    return true;
                } 
            }
        }
    }
    return false;
}

しかし、これはチェックを行う最良の方法ではありません。ここでは、はるかにスムーズでさらに高速です(約5倍、テストします)コード

public boolean checkRow2(char[][] puzzle, String w) {
    String rowStr = null;
    for(int row = 0; row < puzzle.length; row++) {
        rowStr = new String(puzzle[row]);
        if(rowStr.contains(w)) return true;
    }
    return false;
}
于 2011-06-14T17:35:14.913 に答える