https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/
image.png

回溯

  • 暴力递归
    • 游标
    • 路径收集
    • 结果 ```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); } } } ```