文章目录
力扣算法学习day19-1
17-电话号码的字母组合
题目代码实现 力扣算法学习day19-1 17-电话号码的字母组合 题目 代码实现
class Solution { // 自己直接想到的方法。0ms // List result = new ArrayList<>(); // StringBuilder path = new StringBuilder(); // public List letterCombinations(String digits) { // // 由题知,长度至少为0. // if(digits.length() == 0){ // return result; // } // HashMap map = new HashMap<>(); // map.put('2',new char[]{'a','b','c'}); // map.put('3',new char[]{'d','e','f'}); // map.put('4',new char[]{'g','h','i'}); // map.put('5',new char[]{'j','k','l'}); // map.put('6',new char[]{'m','n','o'}); // map.put('7',new char[]{'p','q','r','s'}); // map.put('8',new char[]{'t','u','v'}); // map.put('9',new char[]{'w','x','y','z'}); // char[] number = digits.toCharArray(); // recall(0,number,map); // return result; // } // public void recall(int i,char[] number,HashMap map){ // if(path.length() == number.length){ // result.add(path.toString()); // return; // } // char[] temp = map.get(number[i]); // for(int j = 0;j < temp.length;j++){ // path.append(temp[j]); // recall(i+1,number,map); // path.deleteCharAt(path.length() - 1); // } // } // 其他方法:使用数组,优势,写得更快?速度一样0ms String[] numString = {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"}; List result = new ArrayList<>(); StringBuilder path = new StringBuilder(); public List letterCombinations(String digits) { if(digits.length() == 0){ return result; } recall(digits,0); return result; } public void recall(String digits,int index){ if(path.length() == digits.length()){ result.add(path.toString()); return; } String str = numString[digits.charAt(index)-'0']; for(int j = 0;j < str.length();j++){ path.append(str.charAt(j)); recall(digits,index+1); path.deleteCharAt(path.length()-1); } }}