algorithm - 找出给定数字的最大有效字符串组合数

标签 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 提供解决方案代码,那将会很有帮助。谢谢!

最佳答案

我在一些面试中遇到过这个问题,当我用伪代码或只是在黑板上画出来回答问题时,面试官印象非常深刻。

解决方案:
这个想法是通过作为函数参数的字符串长度来获得所有可能的组合。
假设您的输入是“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

通过每个二进制组合,我们可以从字符串中获取值并从 ABC 中找到我们需要的字母。如果在 1-26 范围内找不到某个值,那么它是无效的。

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

关于algorithm - 找出给定数字的最大有效字符串组合数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28182485/

相关文章:

java - 如何创建 B+ 树数据结构

c++ - 这个数组交集的实现是如何工作的?

algorithm - 部分选择排序与合并排序查找 "k largest in array"

C 树 XML 序列化

sql - 对数据集中的唯一数字组进行递归CTE

c++ - 警告 C4718(Visual Studio 的)到底是什么?

javascript - 取消或停止递归 promise 链中的 $timeout

algorithm - 具有距离函数的集合的最大直径

javascript - 字符串中包含的以 10 为基数的大数字的最佳压缩

c - 这两种方式在递归上有什么区别呢?