0

我正在解决一个问题,我需要将给定的字母数字转换为String基于文本的格式(不知道到底该怎么称呼它)。Example: a = 2, c = 222, f = 333等等。为了更清楚,这可以在手机的键盘上找到。就像您在没有 QWERTY 键盘的旧硬键手机中发短信的方式一样。

Example: (INPUT) hello (OUTPUT) 44+33+555+555+666

这是我的想法。我可以将所有案例(总共 26 + 10 个)预加载到 aHashMap中并使用它。但我认为应该有其他更好的方法来做到这一点吗?欢迎所有/任何出色的想法。

4

2 回答 2

1

由于您需要将字符串(或者您可能需要单个字符!?)与数字相关联,没有什么比使用一些 java.util.Map 实现更容易的了。

对于计算部分,您可以首先计算字符串中每个字符出现的频率,然后添加出现次数(c)x numberFor(c)(2 x 555,而不是在您的示例中添加两次 555)。


更新:想一想,对于特殊情况,可能会有优化。例如,在将所有映射为 0 的极端情况下,计算变得微不足道,不需要 hashmap ;) 或者所有数字都是正数?也许每个字母数字字符映射到不同的素数?

于 2012-04-19T17:01:30.517 回答
1

HashMap将是做你想做的最简单的方法

因为您正在使用一组静态映射,所以您可能需要考虑将查找表实现为一个新类。我认为类的内部可以只是一个字符串数组。当您在数组中进行查找时,您可以从正在查找的字符中减去“a”字符,这将成为数组索引。(对于标点字符,如果减法的结果不在 0 到 25 之间,可以特殊情况处理)。这种方法将绕过散列函数并提高性能。

于 2012-04-19T17:14:09.893 回答