class Solution {
public List<String> letterCombinations(String digits) {
List<String> res = new ArrayList<String>();
if(digits==null || digits.length()==0)
return res;
HashMap<Integer,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");
map.put(0," ");
ArrayList<Character> temp = new ArrayList<>();
getString(digits,temp,res,map);
return res;
}
private static void getString(String digits,ArrayList<Character> temp,List<String> res,HashMap<Integer,String> map){
if(digits.length()==0){
char[] arr = new char[temp.size()];
for(int i=0; i<temp.size(); i++){
arr[i] = temp.get(i);
}
res.add(String.valueOf(arr));
return;
}
Integer cur = Integer.valueOf(digits.substring(0,1));
String letters = map.get(cur);
for(int i=0;i<letters.length();i++){
temp.add(letters.charAt(i));
getString(digits.substring(1),temp,res,map);
temp.remove(temp.size()-1);
}
}
}
输入数字,返回数字代表的字母的所有组合
最新推荐文章于 2020-08-17 14:04:51 发布