码迷,mamicode.com
首页 > 移动开发 > 详细

[leetcode]17. Letter Combinations of a Phone Number手机键盘的字母组合

时间:2018-06-16 10:30:42      阅读:265      评论:0      收藏:0      [点我收藏+]

标签:war   phi   code   margin   etc   note   one   ppi   pos   

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.

 

题意:

给定一个数字串,看看有多少种对应的字母串。

 

思路:

Assumption:

字符串的合法性,是否包含1这个数字?如果包含,怎么处理?同样,输入是否考虑 * 或 #?

空字符串怎么处理?

多个解按什么顺序返回?

 

High Level带着面试官walk through:

take "23" for example:

when index = 0,  pointing to ‘2‘ in "23"

String letters  =  "abc"

for each char in letters,

add to path 

move index forward, pointing to ‘3‘ in "23",  recursively call the helper function to add every char of "def" to the path

 

代码:

 1 class Solution {
 2     private static String[] keyboard =
 3             new String[]{ " ", "", "abc", "def", // ‘0‘,‘1‘,‘2‘,...
 4             "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz" };
 5     
 6     public List<String> letterCombinations(String digits) { //"23"
 7         List<String> result = new ArrayList<>();
 8         if(digits.length() == 0 ) return result;
 9         helper(digits, 0, "", result);
10         return result;    
11     }
12     
13     private void helper(String digits, int index, String path, List<String> result){
14         if(index == digits.length()){
15             result.add(path);
16             return;
17         }
18         
19         String letters = keyboard[digits.charAt(index) - ‘0‘]; 
20         for(int i = 0;  i < letters.length(); i++ ){
21             char c = letters.charAt(i);
22             helper(digits, index+1, path+c , result);
23         }
24     }
25 }

 

[leetcode]17. Letter Combinations of a Phone Number手机键盘的字母组合

标签:war   phi   code   margin   etc   note   one   ppi   pos   

原文地址:https://www.cnblogs.com/liuliu5151/p/9189741.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!