【问题标题】:Searching through 2D array horizontally, vertically, and diagonally (both directions) in Java在Java中水平,垂直和对角线(两个方向)搜索二维数组
【发布时间】:2013-10-20 04:42:16
【问题描述】:

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

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

示例文本文件:

HFELOJF
ESFOIGD
LSDIOGS
LTDMGER
OEROFFT
SFDLKEG

然后我给它一个诸如“hello”之类的词,程序打印出天气或该词是否存在于数组中。有点像单词搜索。

我需要能够水平、垂直和对角搜索。但在所有 3 种情况下,该词也可以倒转。

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

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

我只是觉得这非常重复,并认为必须有一个更简单的方法。但是我已经盯着这个问题看了好几个小时,还没有想出更好的主意。

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

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

【问题讨论】:

  • 如果你能找到一个String转发,把它倒过来看看它是否有效。
  • 是的,这会起作用,但它需要我做另一个循环并不断从数组中减去,看看它是否有效。我知道它有效,但它使代码加倍。我想看看是否有更简单的方法来处理正向和反向这两种情况。
  • “我只是觉得这非常重复,并且认为必须有更简单的方法”。有时,为了理解主题,家庭作业(我假设就是这样)意味着艰苦和重复。在这种情况下,主题是遍历二维数组。是的,这个问题很糟糕,但我相信你会在解决它的过程中找到很多方法
  • 计算出你能做的所有代码。如果你卡住了,贴出你的代码并清楚地解释你卡在哪里以及为什么。我相信如果你这样做,你会得到更好的回应。

标签: java arrays file search 2d


【解决方案1】:

如果你只是想反查

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

【讨论】:

  • 非常感谢!这实际上有很大帮助。我之前所做的是获取原始字符串并从中获取最后一个字母并向后工作,但这会将事情混淆到一个新的水平。在您的帮助下,我能够真正简化代码。谢谢!
【解决方案2】:

我会这样做。循环遍历每个字母。假设该字母是单词的开头或结尾字母。因此,如果在“hello”的情况下不是“h”或“o”,则跳过它。然后为每个字母检查对角线、水平和垂直方向。此外,如果您对这整个相反的事情感到困扰,请忽略它。只需搜索字母“h”并确保检查该字母的所有方向。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-02
    • 2019-03-16
    • 1970-01-01
    • 2013-06-19
    相关资源
    最近更新 更多