标签:字母 level eve letter new lin case 字符 包含
/*
17. 电话号码的字母组合
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
输入:"23"
输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
说明:
尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。
*/
/*
思路:回溯搜索,用getString()函数 取代hashmap速度更快
*/
1 class Solution17Fix { 2 3 private List<String> res = new LinkedList<>(); 4 private char[] solveArray; 5 6 public List<String> letterCombinations(String digits) { 7 8 if (digits == null || digits.length() == 0) { 9 return new LinkedList<>(); 10 } 11 12 solveArray = new char[digits.length()]; 13 search(0,digits); 14 return res; 15 } 16 17 void search(int level, String digits) { 18 if (level == digits.length()) { 19 res.add(String.valueOf(solveArray)); 20 } else { 21 String currString = getString(digits.charAt(level)); 22 for (int i = 0; i < currString.length(); i++) { 23 solveArray[level] = currString.charAt(i); 24 search(level + 1, digits); 25 } 26 } 27 } 28 29 30 String getString(char c) { 31 switch (c) { 32 case ‘2‘: 33 return "abc"; 34 case ‘3‘: 35 return "def"; 36 case ‘4‘: 37 return "ghi"; 38 case ‘5‘: 39 return "jkl"; 40 case ‘6‘: 41 return "mno"; 42 case ‘7‘: 43 return "pqrs"; 44 case ‘8‘: 45 return "tuv"; 46 case ‘9‘: 47 return "wxyz"; 48 default: 49 return ""; 50 } 51 } 52 }
标签:字母 level eve letter new lin case 字符 包含
原文地址:https://www.cnblogs.com/rainbow-/p/10293735.html