题目:
题解
和全排列一模一样的思路,全排列加回溯的思想,多了个数字字符串转字母的过程,终结条件是digits的长度和循环的深度一样就返回。其他和全排列思路一致。
代码
LinkedList<String> ans = new LinkedList<>();
public List<String> letterCombinations(String digits) {
if (digits.isEmpty()) {
return ans;
}
String[] map = new String[]{"0", "1", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
dfs(digits, 0, new StringBuilder().append(" "), map);
return ans;
}
private void dfs(String digits, int dept, StringBuilder str, String[] map) {
if (digits.length() == dept) {
ans.add(str.toString());
return;
}
char temp = digits.charAt(dept);
int index = temp - '0';
String strtemp = map[index];
for (char c : strtemp.toCharArray()) {
str.append(c);
dfs(digits, dept + 1, str, map);
str.deleteCharAt(str.length() - 1);
}
}
备注
本文正在参与「掘金 2021 春招闯关活动」, 点击查看。