1. 题目
2. 思路
(1) 回溯法
- 利用HashMap预先存储数字对应的字母,然后利用回溯法遍历树即可。
3. 代码
import java.util.*;
public class Test {
public static void main(String[] args) {
}
}
class Solution {
private List<String> res;
private String digits;
private Map<Character, String> map;
private StringBuilder stack;
public List<String> letterCombinations(String digits) {
res = new ArrayList<>();
if (digits.length() == 0) {
return res;
}
this.digits = digits;
map = new HashMap<Character, String>() {
{
put('2', "abc");
put('3', "def");
put('4', "ghi");
put('5', "jkl");
put('6', "mno");
put('7', "pqrs");
put('8', "tuv");
put('9', "wxyz");
}};
stack = new StringBuilder();
backtrack(0);
return res;
}
private void backtrack(int index) {
if (stack.length() == digits.length()) {
res.add(stack.toString());
return;
}
String str = map.get(digits.charAt(index));
for (int i = 0; i < str.length(); i++) {
stack.append(str.charAt(i));
backtrack(index + 1);
stack.deleteCharAt(stack.length() - 1);
}
}
}