找到给定数字的有效字符串组合的最大数量

时间:2015-01-28 00:16:07

标签: algorithm recursion

给定HashMap,映射为:

a => 1
b => 2
...
...
z => 26

查找可从该数字生成的最大字符串数。例如:

function("111") = 3
// aaa - 1,1,1
// ak - 1, 11
// ka - 11, 1

function("26") = 2
// bf - 2, 6
// z - 26

function("101") = 1
// ja - 10, 1
// note that there are no other possibilities since 0 does not map to anything

如果有人能用Java提供解决方案代码会很有帮助。谢谢!

1 个答案:

答案 0 :(得分:4)

我在一些采访中遇到过这个问题,当我使用伪代码回答问题或者只是在董事会上绘制问题时,面试官给我留下了非常深刻的印象。

解决方案:
我们的想法是通过String length(函数参数)来实现所有可能的组合 让我们说你的输入是" 111"所以可能的组合是:

  • 1,1,1
  • 11,1
  • 1,11

每次我们需要从String参数中取一个两个位置对吗? 这听起来像二进制,所以我们可以标记:

  • 一个为' 0'
  • 两个作为' 1'

所以我们上面的组合就像:

  1. 1,1,1 ==>> 0,0,0
  2. 11,1 ==>> 1,0
  3. 1,11 ==>> 0,1
  4. 通过每个二进制组合,我们可以从字符串中获取值,并从ABC中找到我们需要的字母。如果某些值无法在1-26的范围内找到,那么它无效。

    解决方案从计算开始,如何通过作为参数给出的字符串长度找到可能的组合。