[英]How could I determine 2D blocks of text from an input text file in Java?
为计算机提供了一个文本文件来解决难题。 在给定的文本文件中,说
b bab abba
aa a baba b
文本的最大块是“目标拼图”,其中拼图的所有部分都由空格隔开。 在最终结果中,该算法应该能够解析“目标”难题中的“碎片”或难题。 最大的文字块隐含地是目标难题。
考虑到它们跨越多行,我该如何解析这些片断并感到困惑? 可以很容易地在一行上解析分离出的块,但是如何将每一行的已解析块连接到一个“块”对象或类似的对象中。 现在,我正在使用2D阵列,对于此特定解析问题的任何帮助将不胜感激。
我认为,对我来说,第一步是将确切的表示形式转换为易于操作的结构。 我同意,多维数组似乎是最合理的模型,因为它非常适合这个概念。
您需要将每个字符读入一个新的char[]
。 您可以使用此问题中的代码来完成此操作 。 那是您的第一步。 将每个char
放入一个数组,并将每个数组放入一个char[][]
。
第二步是接近度检查。 让我们看看一些可能性。
---1---1---11
---1-------11
因此,您知道可以在这里访问每个成员。 我想不出一种比O(n^2)
更好的方法来检查每个元素。 不好,但这是您可以继续发展的东西。
start
索引和finish
索引之间进行检查。 按照上面的示例,您可以..
---1---1---11
^-----------------Found a character. Increment count.
---1---1---11
^----------------Only whitespace next to it. Stop looking.
---1---1---11
---1---1---11
^-----------------Found a character below. Increment count.
---1---1---11
---1---1---11
xxxxxxxxxxxxx
^-----------------We're at the end.
---1---1---11
^----------------There was no value after it. Search is complete.
Total Count = 2.
然后,您将转到下一个。 现在,为了给出一些完整的示例,我将做最后一个示例,向您展示正在使用的算法。
---1---1---11
^---------Found a value that isn't whitespace. Increment count.
---1---1---11
^--------Found another value. Increment count.
---1---1---11
^-------At the end of the array. Stop looking.
---1---1---11
---1-------11
^---------Found a value. Increment count.
---1---1---11
---1-------11
xxxxxxxxxxxxx
^---------At the end. Stop looking.
---1---1---11
---1-------11
^--------Found a value. Increment count.
---1---1---11
---1---1---11
xxxxxxxxxxxxx
^--------At the end. Stop looking.
---1---1---11
^-------At the end of the top array. Finished search.
Total Count = 4.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.