24.Letter Combinations of a Phone Number(電話號對應的字符組合)
阿新 • • 發佈:2019-04-21
.get could edi new hat answer tostring hash inf
Level:
??Medium
題目描述:
Given a string containing digits from 2-9
inclusive, return all possible letter combinations that the number could represent.
A mapping of digit to letters (just like on the telephone buttons) is given below. Note that 1 does not map to any letters.
Example:
Input: "23" Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
Note:
Although the above answer is in lexicographical order, your answer could be in any order you want.
思路分析:
??建立hashmap將每個數字對應的字符映射存放在map中,利用遞歸回溯解決問題。
代碼:
public class Solution{ public List<String>letterCombinations(String digits){ List<String>res=new ArrayList<>(); if(digits==null||digits.equals("")) return res; HashMap<Character,char[]>map=new HashMap<>(); map.put('0',new char[]{}); map.put('1',new char[]{}); 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'}); StringBuilder str=new StringBuilder(); findComb(digits,map,res,str); return res; } public void findComb(String digits,HashMap<Character,char[]>map,List<String>res,StringBuilder str){ if(str.length==digits.length){//str的長度等於digits的長度證明是其中一個結果 res.add(str.toString()); return; } for(char c:map.get(digits.charAt(str.length()))){ str.append(c); findComb(digits,map,res,str);//遞歸回溯找出所有的結果 str.deleteCharAt(str.length()-1);//每找出一個結果後,str的長度減一,添加下一種可能 } } }
24.Letter Combinations of a Phone Number(電話號對應的字符組合)