https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/
回溯
- 暴力递归
- 游标
- 路径收集
- 结果
```java
public static char[][] phone = {
{‘a’, ‘b’, ‘c’}, //2 0
{‘d’, ‘e’, ‘f’}, //3 1
{‘g’, ‘h’, ‘i’}, //4 2
{‘j’, ‘k’, ‘l’}, //5 3
{‘m’, ‘n’, ‘o’}, //6 4
{‘p’, ‘q’, ‘r’, ‘s’}, // 7 5
{‘t’, ‘u’, ‘v’}, // 8 6
{‘w’, ‘x’, ‘y’, ‘z’} //9 7
};
public List letterCombinations(String digits) {
List ans = new ArrayList<>();
if (digits == null || digits.length() == 0) return ans;
char[] str = digits.toCharArray();
char[] path = new char[str.length];
process(str, 0, path, ans);
return ans;
}
private void process(char[] str, int index, char[] path, List ans) {
if (index == str.length) {
ans.add(String.valueOf(path));
} else {
char[] nexts = phone[str[index] - ‘2’];
for (char cur : nexts) {
path[index] = cur;
process(str, index + 1, path, ans);
}
}
}
```