首页 > 代码库 > [leetcode] Letter Combinations of a Phone Number

[leetcode] Letter Combinations of a Phone Number

 

Given a digit string, 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.

Input:Digit string "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.


https://oj.leetcode.com/problems/letter-combinations-of-a-phone-number/

 

 

思路:dfs。

技巧,数字与字母map的应用。

特殊情况,输入是"",要求也返回[""],略不科学。。

 

import java.util.ArrayList;import java.util.List;public class Solution {    public List<String> letterCombinations(String digits) {        List<String> res = new ArrayList<String>();        if(digits.length()==0){            res.add("");            return res;        }        StringBuilder sb = new StringBuilder();        dfs(res,digits,sb);                return res;    }         private String[] numMap = {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};        private void dfs(List<String> res, String digits,StringBuilder sb){        if(digits.length()==0){            res.add(sb.toString());            return;        }        int curDigit =digits.charAt(0)-‘0‘;        String curStr = numMap[curDigit];                for(int i=0;i<curStr.length();i++){            sb.append(curStr.charAt(i));            dfs(res,digits.substring(1),sb);            sb.deleteCharAt(sb.length()-1);        }                    }        public static void main(String[]args){        System.out.println(new Solution().letterCombinations(""));    }    }