题目:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
示例: 输入:"23" 输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]. 说明: 尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。
使用队列:
(学习的大佬的算法,自己写的太菜了啊 )
class Solution { public List<String> letterCombinations(String digits) { if(digits==null || digits.length()==0) { return new ArrayList<String>(); } String[] letter_map = { " ","*","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz" }; List<String> result = new ArrayList<>(); result.add(""); for(int i=0;i<digits.length();i++) { String letters = letter_map[digits.charAt(i)-'0']; int size = result.size(); for(int j=0;j<size;j++) { String tmp = result.remove(0); for(int k=0;k<letters.length();k++) { result.add(tmp+letters.charAt(k)); } } } return result; } }