描述:給定一個僅包含數(shù)字2-9的字符串断序,返回所有它能表示的字母組合。
給出數(shù)字到字母的映射如下(與電話按鍵相同)棉圈。注意 1 不對應任何字母幌氮。
```
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.ArrayList;
class Solution {
? ? public List<String> letterCombinations(String digits) {
? ? ? ? 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");
? ? ? ? LinkedList<Character> temp = new LinkedList<>();
? ? ? ? List<String> res = new ArrayList<>();
? ? ? ? if(digits==null || digits.length()==0)
? ? ? ? ? ? return res;
? ? ? ? dfs(map,digits,0,res,temp);
? ? ? ? return res;
? ? }
? ? private void dfs(HashMap<Integer,String> map, String digits, int index, List<String> res, LinkedList<Character> temp) {
? ? ? ? if(index>digits.length()-1) {
? ? ? ? ? ? StringBuffer s = new StringBuffer();
? ? ? ? ? ? for(int i=0;i<temp.size();i++) {
? ? ? ? ? ? ? ? s.append(temp.get(i));
? ? ? ? ? ? }
? ? ? ? ? ? res.add(s.toString());
? ? ? ? ? ? return;
? ? ? ? }
? ? ? ? int n = digits.charAt(index)-'0';
? ? ? ? String str = map.get(n);
? ? ? ? for(int i=0;i<str.length();i++) {
? ? ? ? ? ? temp.add(str.charAt(i));
? ? ? ? ? ? dfs(map,digits,index+1,res,temp);
? ? ? ? ? ? temp.pollLast();
? ? ? ? }
? ? }
}
```