[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(""));
    }
    
}

 

第二遍记录:

 

posted @ 2014-08-04 19:27  jdflyfly  阅读(363)  评论(3编辑  收藏  举报