leetcode:17.电话号码的字母组合

题意和解题思路:
数字和字母的一一对应采用二维数组或者map映射。

这里我采用数组进行存储进而实现一一对应。由于我们无法知道for循环嵌套几层,因为这个是由于输入来确定的,所以我们可以用回溯算法中的递归来进行实现。

树形结构:

我们所要求的结果就在树形结构的叶子节点中。树的宽度由字母数组决定,深度由输入决定。

代码:

初始化定义:收集单个结果用s,整个结果用result,letterMap存储映射关系。

index:不需要像startIndex一样不取其之前的元素,这里代表对于输入数字的索引,便于查找对应的字符集。

主程序:

1.检查输入字符串是否为空,若为空,返回空结果。

2.定义递归函数

3.返回结果

递归函数:

1.根据上面的分析,我们可以得出遍历的深度等于输入数字的长度,因此一旦相等就加入结果集。

2.将输入字符串索引处的字符转换成整数

3.获取其对应的字符集

4.循环:

处理字符

递归调用,注意索引加1,处理下一个数

回溯,删除最后的字符(其中删除字符串最后一个字母应该用s = s[0:-1],其中0可以省略)

实现过程:

leetcode:17.电话号码的字母组合_第1张图片

 

你可能感兴趣的:(leetcode,算法,职场和发展)