0

假设我有两个点

new Point(80,40);
new Point(40,80);

我想将它们转换为一个字符串,一个字符串表示。

01
10

其中 1 是一个点,0 是空白空间。你可以在这里看到字符串被放大了 40 倍,每个点的宽度和高度都是 40。所有点都是 40 的倍数。

我试图用 StringBuilder 弥补一些东西,但我不知道从哪里开始,因为我只能插入一个给定字符串长度的字符,而不是高度(或 y 值)。

这是另一个例子。

 new Point(120,80);
 new Point(80,240);
 new Point(40,80);

变成

 010
 001
 000
 000
 000
 010

我希望有一个高效的解决方案,我有成千上万的积分。解决方案不需要代码,只需了解如何实现即可。

但是,数据实际上存储在一个哈希图中,其中包含应该写入的字符(在上面的示例中全为 1)作为键,点作为值。

哈希图示例

     Value             Key
 new Point(40,40)      'a'
 new Point(80,80)      'b'

这会导致

 a0
 0b
4

1 回答 1

1

这是一个使用内存但计算效率高的解决方案:

  1. 创建一个二维布尔数组来表示您的“地图”,初始化为 all- false

  2. 遍历您的点,将坐标除以 40,使用它来索引数组,然后设置为true.

  3. 迭代您的二维数组,打印10为每个元素。

于 2013-06-14T15:50:25.683 回答