在 Java 中水平、垂直和对角线(双向)搜索 2D 数组



我在尝试编写该程序时遇到困难。我在网上发现了许多类似的问题和解决方案,但它们并不是我想要的。

有一个文本文件,我的程序读取并转换为字符 2D 数组。

示例文本文件:

HFELOJF
ESFOIGD
LSDIOGS
LTDMGER
OEROFFT
SFDLKEG

然后我给它一个单词,例如"hello",程序打印出天气或单词是否存在于数组中。有点像单词搜索。

我需要能够水平、垂直和对角线搜索。但是在所有 3 种情况下,这个词也可以倒过来。

我从 2 个 for 循环开始,从左上角开始,一直到最后。

在第二个 for 循环中,我有 3 个 while 循环要处理:水平、垂直和对角线文本。但我刚刚意识到,如果这个词相反,它是行不通的。现在为了解决这个问题,我必须构造其他 3 个 while 循环来处理我的代码。

我只是觉得这很重复,并认为一定有更简单的方法。但是我已经盯着这个问题几个小时了,还没有想出一个更聪明的想法。

如果我继续我所拥有的,我将在第二个 for 循环中有 2 个 for 循环和 6 个 while 循环,我发现它们非常混乱、重复和额外的代码。有没有更好、更快、更有效的方法来解决这样的问题?

感谢我能得到的所有帮助和信息!

如果您只想检查反向

String reverse = new StringBuffer(string).reverse().toString();

这是我的做法。 遍历每个字母。 假装字母是单词的开头或结尾字母。 因此,如果在"hello"的情况下不是"h"或"o",请跳过它。 然后,对于每个字母,请检查对角线,水平和垂直方向。此外,如果你这整个相反的事情困扰你忽略它。 只需搜索字母"h",并确保检查该字母的所有方向。

最新更新