日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

17. Letter Combinations of a Phone Number

發布時間:2025/5/22 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 17. Letter Combinations of a Phone Number 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

集合類的,一看就是back track

只不過子集需要規定一下。

然后好在沒有1 0 什么的。。簡單了很多

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來規定可用字母。

其實完全可以String[] = new String[9];
String[2] = "abc"
String[3] = "def"
...

甚至String[] cao = {"","abc","def"...}

BACK TRACK沒啥可說的。。

-----

三刷。

只有數字的話簡單多了,沒那些亂七八糟的。

DFS。。

復雜度:

Time: O(3^n)
Space: O(n)

public class Solution {public List<String> letterCombinations(String digits) {List<String> res = new ArrayList<>();if (digits.length() == 0) return res;String[] strs = {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};dfs(res, strs, digits, new String());return res;}public void dfs(List<String> res, String[] strs, String s, String tempS) {if (s.length() == 0) {res.add(tempS);return;} else {String letter = strs[s.charAt(0) - '0'];for (int i = 0; i < letter.length(); i++) {dfs(res, strs, s.substring(1), tempS + letter.charAt(i));}}} }

轉載于:https://www.cnblogs.com/reboot329/articles/6042560.html

總結

以上是生活随笔為你收集整理的17. Letter Combinations of a Phone Number的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。