使用map存储数字和字母的对应关系
和之前的括号组合,子集问题思路类似
public List<String> letterCombinations(String digits) {
map.put("2", "abc");
map.put("3", "def");
map.put("4", "ghi");
map.put("5", "jkl");
map.put("6", "mno");
map.put("7", "pqrs");
map.put("8", "tuv");
map.put("9", "wxyz");
char[] array = digits.toCharArray();
recursion(array, 0, "");
return result;
}
Map<String, String> map = new HashMap<>();
List<String> result = new ArrayList<>();
private void recursion(char[] array, int level, String s) {
if(level==array.length) {
result.add(s);
return;
}
String letter = map.get(array[level]+"");
char[] letterArray = letter.toCharArray();
for(char c : letterArray) {
recursion(array, level+1, s+c);
}
}