给定一个仅包含数字 2-9
的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
示例 1:
输入:digits = "23" 输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]
示例 2:
输入:digits = "" 输出:[]
示例 3:
输入:digits = "2" 输出:["a","b","c"]class Solution { List<String> result = new ArrayList<>(); StringBuilder temp = new StringBuilder(); String[] stringMap = new String[]{"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
public List<String> letterCombinations(String digits) { if (digits == null || digits.length() == 0) { return new ArrayList<>(); } backtrack(digits, 0); return result;
}
void backtrack(String digits, int index) { if (index == digits.length()) { result.add(temp.toString()); return; } int pos = digits.charAt(index) - '0'; // "abc" "def" ... String str = stringMap[pos]; for (int j = 0; j < str.length(); j++) { temp.append(str.charAt(j)); backtrack(digits, index + 1); temp.deleteCharAt(temp.length() - 1); }
}
}
标签:digits,index,17,temp,dfs,length,字母组合,new,String From: https://www.cnblogs.com/JavaYuYin/p/18013485