给定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提供解决方案代码会很有帮助。谢谢!
答案 0 :(得分:4)
我在一些采访中遇到过这个问题,当我使用伪代码回答问题或者只是在董事会上绘制问题时,面试官给我留下了非常深刻的印象。
解决方案:
我们的想法是通过String length(函数参数)来实现所有可能的组合
让我们说你的输入是" 111"所以可能的组合是:
每次我们需要从String参数中取一个或两个位置对吗? 这听起来像二进制,所以我们可以标记:
所以我们上面的组合就像:
通过每个二进制组合,我们可以从字符串中获取值,并从ABC中找到我们需要的字母。如果某些值无法在1-26的范围内找到,那么它无效。
解决方案从计算开始,如何通过作为参数给出的字符串长度找到可能的组合。