# 电话号码的字母组合

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。

给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

 

示例 1:

输入:digits = "23"
输出:
["ad","ae","af","bd","be","bf","cd","ce","cf"]

示例 2:

输入:digits = ""
输出:
[]

示例 3:

输入:digits = "2"
输出:
["a","b","c"]

 

提示:

## template ```java class Solution { public List letterCombinations(String digits) { Character[][] letters = { {}, {}, { 'a', 'b', 'c' }, { 'd', 'e', 'f' }, { 'g', 'h', 'i' }, { 'j', 'k', 'l' }, { 'm', 'n', 'o' }, { 'p', 'q', 'r', 's' }, { 't', 'u', 'v' }, { 'w', 'x', 'y', 'z' }, }; List> combinations = new ArrayList<>(); for (int i = 0; i < digits.length(); i++) { Character d = digits.charAt(i); int index = Character.getNumericValue(d); Character[] letter = letters[index]; System.out.println(d); if (i == 0) { for (int j = 0; j < letter.length; j++) { List c = new ArrayList<>(); c.add(letter[j]); combinations.add(c); } } else { List> added = new ArrayList<>(); for (int j = 0; j < combinations.size(); j++) { List c = combinations.get(j); List origin_c = new ArrayList<>(c); for (int k = 0; k < letter.length; k++) { Character l = letter[k]; if (k == 0) { c.add(l); } else { List new_c = new ArrayList<>(origin_c); new_c.add(l); added.add(new_c); } } } combinations.addAll(added); } } List output = new ArrayList<>(); for (int i = 0; i < combinations.size(); i++) { List c = combinations.get(i); StringBuilder sb = new StringBuilder(); for (Character l : c) { sb.append(l); } output.add(sb.toString()); } return output; } } ``` ## 答案 ```java ``` ## 选项 ### A ```java ``` ### B ```java ``` ### C ```java ```