17. Letter Combinations of a Phone Number

題目連接:https://leetcode.com/problems/letter-combinations-of-a-phone-number/description/git

題目大意:給出所給數字所對應字母的全部組合字符串。例子以下:數組

解法一:深搜,沒遇到一個數字,就dfs一次它所對應的字母,而後再回溯,基本上就是組合的排列組合的變形。細節注意:1.將每一個數字所對應的字符串存入數組。2.將字符數字轉爲數字。3.刪除字符串最後一個字符。代碼以下(耗時3ms):ide

 1     private static String[] s = {"", "", "abc", "def", "ghi", "jkl", "mno", "qprs", "tuv", "wxyz"};//1.將每一個數字所對應的字符串存入數組。
 2     public List<String> letterCombinations(String digits) {
 3         List<String> res = new ArrayList<String>();
 4         if(digits.length() == 0) {
 5             return res;
 6         }
 7         String listIn = "";
 8         dfs(digits, res, listIn, 0);
 9         return res;
10     }
11     public static void dfs(String digits, List<String> res, String listIn, int index) {
12         if(listIn.length() == digits.length()) {
13             res.add(new String(listIn));
14         }
15         if(index == digits.length()) {
16             return;
17         }
18         int pos = digits.charAt(index) - '0';//2.將字符數字轉爲數字。
19         int length = s[pos].length();
20         for(int i = 0; i < length; i++) {
21             listIn += s[pos].charAt(i);
22             dfs(digits, res, listIn, index + 1);
23             listIn = listIn.substring(0, listIn.length() - 1);//3.刪除字符串最後一個字符。
24         }
25     }
View Code
相關文章
相關標籤/搜索