【刷题记录】17. 电话号码的字母组合
一、题目描述
来源:力扣(LeetCode)
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
示例 1:
复制代码
示例 2:
复制代码
示例 3:
复制代码
提示:
0 <= digits.length <= 4
digits[i] 是范围 ['2', '9'] 的一个数字。
二、思路分析
hashMap + DFS 深度优先搜索
从题目中可以看出,每一个数字都对应字符数组。我们用可以
map
来存这个对应的关系其实每一个数字我们都可以看成一个树的节点,而对应的字符,就可以看作是这个节点下的分支
每多一个数字,就相当于在分支的节点下多一个相应的情况分支。
然后我们对这个树进行遍历即为我们想要的最终结果例如上面的示例 1:
代码实现
复制代码
复杂度分析
时间复杂度:,其中 m
是输入中对应 3
个字母的数字个数, n
是输入中对应 4
个字母的数字个数
空间复杂度:。一共要生成 个结果
运行结果
总结
我们可以将问题模拟转为成我们相对比较熟悉的模型,这样能够帮助我们的更好的理解和更快的解决问题。
版权声明: 本文为 InfoQ 作者【WangNing】的原创文章。
原文链接:【http://xie.infoq.cn/article/7ec62ec9a9c39cff9a41d64be】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论