题目:给定一个仅包含数字 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;
}
}