LeetCode 17. 电话号码的字母组合

17. 电话号码的字母组合

解题思路

先建立数字到字母的映射表,按位置逐层递归,每层遍历当前数字对应的所有可选字母,填入路径对应位置后进入下一层,递归到底时直接将路径数组转为字符串加入结果,无需回溯撤销

参考代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class Solution {
private static final String[] MAPPING = new String[]{"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
private List<String> res = new ArrayList<>();
private char[] path;

public List<String> letterCombinations(String digits) {
int len = digits.length();
if(len == 0) {
return res;
}
path = new char[len];
dfs(0, digits.toCharArray());
return res;
}

private void dfs(int i, char[] digits) {
if(i == digits.length) {
res.add(new String(path));
return;
}
String str = MAPPING[digits[i] - '0'];
for(int j = 0; j < str.length(); j ++) {
path[i] = str.charAt(j);
dfs(i + 1, digits);
}
}
}

LeetCode 17. 电话号码的字母组合
https://sowink.cn/2026/02/08/LeetCode-17-电话号码的字母组合/
作者
Xurx
发布于
2026年2月8日
许可协议