题意和解题思路:
数字和字母的一一对应采用二维数组或者map映射。
这里我采用数组进行存储进而实现一一对应。由于我们无法知道for循环嵌套几层,因为这个是由于输入来确定的,所以我们可以用回溯算法中的递归来进行实现。
树形结构:
我们所要求的结果就在树形结构的叶子节点中。树的宽度由字母数组决定,深度由输入决定。
代码:
初始化定义:收集单个结果用s,整个结果用result,letterMap存储映射关系。
index:不需要像startIndex一样不取其之前的元素,这里代表对于输入数字的索引,便于查找对应的字符集。
主程序:
1.检查输入字符串是否为空,若为空,返回空结果。
2.定义递归函数
3.返回结果
递归函数:
1.根据上面的分析,我们可以得出遍历的深度等于输入数字的长度,因此一旦相等就加入结果集。
2.将输入字符串索引处的字符转换成整数
3.获取其对应的字符集
4.循环:
处理字符
递归调用,注意索引加1,处理下一个数
回溯,删除最后的字符(其中删除字符串最后一个字母应该用s = s[0:-1],其中0可以省略)
实现过程: