17. Letter Combinations of a Phone Number
生活随笔
收集整理的這篇文章主要介紹了
17. Letter Combinations of a Phone Number
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
集合類的,一看就是back track
只不過子集需要規(guī)定一下。
然后好在沒有1 0 什么的。。簡(jiǎn)單了很多
public class Solution {public List<String> letterCombinations(String digits) {List<String> res = new ArrayList<>();if(digits.length() == 0) return res;Map<Integer,List<Character>> map = new HashMap<Integer,List<Character>>();for(char i = '2'; i <= '9';i++) map.put(i - '0',new ArrayList<Character>());map.get(2).add('a');map.get(2).add('b');map.get(2).add('c');map.get(3).add('d');map.get(3).add('e');map.get(3).add('f');map.get(4).add('g');map.get(4).add('h');map.get(4).add('i');map.get(5).add('j');map.get(5).add('k');map.get(5).add('l');map.get(6).add('m');map.get(6).add('n');map.get(6).add('o');map.get(7).add('p');map.get(7).add('q');map.get(7).add('r');map.get(7).add('s');map.get(8).add('t');map.get(8).add('u');map.get(8).add('v');map.get(9).add('w');map.get(9).add('x');map.get(9).add('y');map.get(9).add('z');helper(res,digits,map,new String(),0);return res; }public void helper(List<String> res, String digits, Map<Integer,List<Character>> map, String tempStr,int m){if(m == digits.length()){res.add(tempStr);}else{char tempCh = digits.charAt(m);List<Character> letterList = map.get(tempCh - '0');for(int j = 0; j < letterList.size();j++){helper(res,digits,map,tempStr + Character.toString(letterList.get(j)),m+1);}}}}我居然蠢到用MAP來規(guī)定可用字母。
其實(shí)完全可以String[] = new String[9];
String[2] = "abc"
String[3] = "def"
...
甚至String[] cao = {"","abc","def"...}
BACK TRACK沒啥可說的。。
-----
三刷。
只有數(shù)字的話簡(jiǎn)單多了,沒那些亂七八糟的。
DFS。。
復(fù)雜度:
Time: O(3^n)
Space: O(n)
轉(zhuǎn)載于:https://www.cnblogs.com/reboot329/articles/6042560.html
總結(jié)
以上是生活随笔為你收集整理的17. Letter Combinations of a Phone Number的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 红硬盒宝石芙蓉王香烟真怎么分别?
- 下一篇: Html之head部分详解