在Java中水平,垂直和对角(两个方向)搜索2D数组

时间:2013-10-20 04:42:16

标签: java arrays file search 2d

我正在努力编写这个程序。我在网上发现了许多类似的问题和解决方案,但它们并不是我想要的。

我的程序读取了一个文本文件,并将其转换为char 2D数组。

示例文本文件:

HFELOJF
ESFOIGD
LSDIOGS
LTDMGER
OEROFFT
SFDLKEG

然后我给它一个单词,如“你好”,程序打印出天气或不存在数组中存在的单词。有点像单词搜索。

我需要能够水平,垂直和对角搜索。但在所有3个案例中,这个词也可以倒退。

我已经开始使用2个for for循环从左上角开始并一直到最后。

在第二个for循环中,我有3个while循环来处理:水平,垂直和对角线文本。但我只是意识到,如果这个词是相反的话它就不起作用。现在为了让我解决这个问题,我必须构建另外3个while循环来处理我的代码。

我发现这非常重复,并认为必须有一个更简单的方法。但我一直盯着这个问题几个小时,并没有提出更明智的想法。

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

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

2 个答案:

答案 0 :(得分:2)

如果您只想查看反向

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

答案 1 :(得分:0)

我将如何做到这一点。循环遍历每个字母。假装字母是单词的开头或结尾字母。如果在“你好”的情况下不是'h'或'o',那就跳过它。然后对每个字母检查对角线,水平和垂直方向。如果你这整个反向的事情困扰你忽略它。只需搜索字母'h',并确保检查该信中的所有路线。