2011-12-08 8 views
-2

このコードは、左から右に移動すると単語を見つけることができます。右から左、上から下に単語を検索するには、どのように変更できますか?Java東から西、西から東への検索結果

boolean findWE(String word) { 
    for (int r = 0; r < height; r++) { 
    for (int c = 0; c <= width - word.length(); c++) { 
     if (word.charAt(0) == grid[r][c]) { 
     boolean failed = false; 
     for (int i = 0; i < word.length() && !failed; i++) { 
      if (word.charAt(i) != grid[r][c + i]) { 
      failed = true; 
      } 
     } 
     if (!failed) { 
      System.out.printf("%s found WE at(%d,%d)\n", word, r, c); 
      return true; 
     } 
     } 
    } 
    } 
    return false; 
} 
+1

この宿題はありますか? – Bringer128

+0

宿題ではありません。 – Rls

+3

それについて考えて、プログラムを変更することによって。あなたがまだ答えを得ていないなら、あなたはそれについて十分に考えなかった。これを自分で解決すれば、もっと学び、より良いJavaプログラマになるでしょう。これは宿題であるかどうかに関わらずです。 –

答えて

1

これは宿題ではありませんので、あなただけの文字列を逆にするライブラリ関数を使用することができるはずです:後方IS「EDCBA」に「ABC」を発見以来

boolean findEW(String word) { 
    StringBuilder builder = new StringBuilder(); 

    // Why are your strings stored as a 2-dimensional character array?? 
    for(int r = 0; r < height; r++) { 
    builder.append(grid[r]); 
    builder.append("\n"); 
    } 

    builder.reverse(); 
    return builder.toString().contains(word); 
} 

あるいは、 「edcba」の「cba」を見つけることと同じですが、次のことができます。

boolean findEW(String word) { 
    return findWE(new StringBuilder(word).reverse()); 
} 
+0

私は間違いなく、実際のコードでは、このアプローチは好ましいことに同意します。しかし、学習目的のためには、ループで遊んで、問題のコード・パッセージのスタイルに似た方法でこれを解決することは、まだ有益です。 – Alderath

+1

これは「宿題」としてマークする必要があります。そうでなければ、この答えは問題を完全に解決します。 – Guillaume

関連する問題