Leetcode 17.电话号码的字母组合
题目要求

示例 1:
输入:digits = “23”
输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”]
示例 2:
输入:digits = “”
输出:[]
示例 3:
输入:digits = “2”
输出:[“a”,“b”,“c”]
回溯法
使用j来控制当前循环中要遍历的字符串
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 28 29 30 31 32 33
| class Solution { public List<String> result = new ArrayList<>(); public StringBuilder path = new StringBuilder();
public List<String> letterCombinations(String digits) { if (digits.length() == 0) return result; Map<Character, String> map = new HashMap<>(); map.put('2', "abc"); map.put('3', "def"); map.put('4', "ghi"); map.put('5', "jkl"); map.put('6', "mno"); map.put('7', "pqrs"); map.put('8', "tuv"); map.put('9', "wxyz");
backtrack(digits, map, 0); return result; }
public void backtrack(String digits, Map<Character, String> map, int j) { if (path.length() == digits.length()) { result.add(path.toString()); return; } String curStr = map.get(digits.charAt(j)); for (int i = 0; i < curStr.length(); i++) { path.append(curStr.charAt(i)); backtrack(digits, map, j + 1); path.deleteCharAt(path.length() - 1); } } }
|