首页 > 其他 > 详细

17. 电话号码的字母组合

时间:2020-06-29 15:52:31      阅读:62      评论:0      收藏:0      [点我收藏+]

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。

给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

示例:
技术分享图片
输入:"23"
输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].

说明:
尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

 

法一:

 1      HashMap<String, String> map = new HashMap<>();
 2      ArrayList<String> ans = new ArrayList<>();
 3 
 4     private  void pjin(String com, String s) {
 5         //调用最底层 数字串裁剪完 变空串 com为一组答案
 6         if (s.length() == 0) {
 7             ans.add(com);
 8         } else {
 9             String c = s.charAt(0) + "";
10             String ss = map.get(c);
11             for (int j = 0; j < ss.length(); j++) {
12                 //递归调用 s为数字 ss为对应字母 
13                 //每次取对应的一个字母拼接 再将剩下的数字递归调用
14                 pjin(com + ss.substring(j, j + 1), s.substring(1));
15             }
16         }
17 
18     }
19 
20 
21     public  List<String> letterCombinations(String digits) {
22         map.put("2", "abc");
23         map.put("3", "def");
24         map.put("4", "ghi");
25         map.put("5", "jkl");
26         map.put("6", "mno");
27         map.put("7", "pqrs");
28         map.put("8", "tuv");
29         map.put("9", "wxyz");
30 
31         if (digits.length() != 0) {
32             pjin("", digits);
33             return ans;
34         } else
35             return ans;
36     }

利用递归调用,每次取数字字符串中一个数字,循环取该数字对应的字母进行拼接,在递归该拼接字母串和剩余数字字符串,直到数字字符串为空

17. 电话号码的字母组合

原文:https://www.cnblogs.com/boboboo610/p/13207316.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!