给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
public List<String> letterCombinations(String digits) {
String[] dic = {"abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
List<String> res = new ArrayList<>();
for(int i = 0;i < digits.length();i++){
int index = Integer.parseInt(String.valueOf(digits.charAt(i))) - 2;
if(res.size() == 0){
for(int j = 0;j < dic[index].length();j++){
res.add(String.valueOf(dic[index].charAt(j)));
}
continue;
}
List<String> temp = new ArrayList<>(res);
res = new ArrayList<>();
for(int j = 0;j < temp.size();j++){
String str = temp.get(j);
for(int m = 0;m < dic[index].length();m++){
res.add(str + String.valueOf(dic[index].charAt(m)));
}
}
}
return res;
}
}