将点转换为文本表示

时间:2013-06-14 15:46:33

标签: java string point

假设我有两个积分

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

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

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)作为键,而点作为值。

Hashmap的示例

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

哪会导致

 a0
 0b

1 个答案:

答案 0 :(得分:1)

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

  1. 创建一个2D布尔数组来表示您的“地图”,初始化为全部 - false

  2. 迭代你的点,将坐标除以40,用它来索引数组,并设置为true

  3. 迭代您的2D数组,为每个元素打印10