将一个给定的单词对角搜索成一个字母拼图

时间:2017-03-14 12:05:04

标签: java tostring

我有一个用随机字母填充的二维数组。我有话要在那个数组中找到。

我编写了一个 <div ng-app='myApp'> <div ng-controller='ctrl' id='ctrl'> {{msg}} <button id='btn' ng-click='sayHello()'> Go </button> </div> </div> 方法,该方法使用:

  • toString:要找到的字符串的起始位置
  • startX:要找到的字符串的起始位置
  • startY:要查找的字符串的结束X位置
  • endX:要查找的字符串的结束Y位置

我提供的代码水平和垂直工作,但不适用于对角线。如何打印对角放置在阵列中的单词?

endY

2 个答案:

答案 0 :(得分:0)

如果:

  1. 你的每个单词都在一个特定的行中,不会溢出到下一行和
  2. 所有单词都是连续的
  3. 然后你可以这样做:

    @Override
    public String toString()
    {
        StringBuilder string = new StringBuilder();
    
        for(int c = startY; c<=endY; c++) {
            string.append(startX).append("x").append(c).append(", ");
        }
    
        return string.toString();
    }
    

答案 1 :(得分:0)

我认为你所寻找的是一种在字母拼图中找到单词的方法。

在这种情况下,我建议您将拼图存储在2D数组中,并将字词存储在字符串中。然后,您需要检查数组中与您要查找的字符串的开头字符具有相同字符的所有位置(在我提供的代码中:search/b/109/p/93)。找到匹配项后,您需要检查字符串的其余字符(在我提供的代码中:findWord)。如果其余字符匹配,那么您已找到该字符串,否则您需要检查其他方向或字符串第一个字母的下一个外观。

接下来我提供代码:

checkDirections

请注意:

  • 拼图矩阵是随机初始化的,我对单词&#39; java&#39;进行了硬编码。在2,3 - > 5,3个位置(这仅用于示例,但您应该从命令行或文件初始化拼图)。

  • ALPHABET变量仅用于随机生成。

  • 方向存储在两个一维阵列上,以编程方式制作8个方向,但为了清晰起见,您可以展开。

  • 在性能方面,它可能不是最有效的代码,因为如果字符串的第一个字符出现多次,您将仔细检查大量的位置。然而,它仍然是一个可行且简单的解决方案。