首页 > 代码库 > Keypad Permutation
Keypad Permutation
Problem
Phone has letters on the number keys. for example, number 2 has ABC on it, number 3 has DEF, 4 number has GHI,... , and number 9 has WXYZ. Write a program that will print out all of the possible combination of those letters depending on the input.
Solution
HashMap
1 public static ArrayList<String> letterCombinations(String digits) { 2 StringBuilder sb = new StringBuilder(); 3 ArrayList<String> res = new ArrayList<String>(); 4 5 if(digits == null) { 6 return res; 7 } 8 9 //hashmap to store the key pad info10 Map<Character, char[]> hm = new HashMap<Character, char[]>();11 hm.put(‘2‘, new char[]{‘a‘, ‘b‘, ‘c‘});12 hm.put(‘3‘, new char[]{‘d‘, ‘e‘, ‘f‘});13 hm.put(‘4‘, new char[]{‘g‘, ‘h‘, ‘i‘});14 hm.put(‘5‘, new char[]{‘j‘, ‘k‘, ‘l‘});15 hm.put(‘6‘, new char[]{‘m‘, ‘n‘, ‘o‘});16 hm.put(‘7‘, new char[]{‘p‘, ‘q‘, ‘r‘, ‘s‘});17 hm.put(‘8‘, new char[]{‘t‘, ‘u‘, ‘v‘});18 hm.put(‘9‘, new char[]{‘w‘, ‘x‘, ‘y‘, ‘z‘});19 20 helper(digits, res, sb, hm, 0);21 22 return res;23 24 }25 26 public static void helper(String digits, ArrayList<String> res, StringBuilder sb, Map<Character, char[]> hm, int pos) {27 if(pos == digits.length()) {28 res.add(sb.toString());29 return;30 }31 32 for(int i=0; i<hm.get(digits.charAt(pos)).length; i++) {33 sb.append(hm.get(digits.charAt(pos))[i]);34 helper(digits, res, sb, hm, pos+1);35 sb.deleteCharAt(sb.length()-1);36 }37 }
Keypad Permutation
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。