字母数字字符串到相应的键击

时间:2012-04-19 16:49:18

标签: java

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

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

这是我的想法。我可以将所有案例(全部为26 + 10)预先加载到HashMap并使用它。但我认为应该有其他更好的方法来做到这一点吗?欢迎所有/任何精彩的想法。

2 个答案:

答案 0 :(得分:1)

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

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


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

答案 1 :(得分:1)

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

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