给定一个仅包含数字 2-9
的字符串,返回所有它能表示的字母组合。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
示例:
输入:"23"
输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
解题思路:设定按键与所包含字符的映射集合(Map),设定返回的List集合,利用深度优先搜索的思想,按照给出的按键顺序逐层搜索即可。在每一层中,使用for循环,以当前字符取-继续下一层dfs-当前字符不取的过程搜索,直到搜索的层数达到给定字符串的长度,停止,并将当前结果添加到List列表集合中,返回即可。
要注意给定字符串长度为0的情况,不需要dfs,直接返回空List,不可返回 :[""](报错)。
开始按照传统的传参的方式调用dfs函数,将映射Map集合通过参数传递过去。利用StringBuffer声明一个便于增减字符的变量,进行深度搜索。
class Solution {
Map<Character,String>