leetcode--Letter Combinations of a Phone Number

来源:互联网 发布:淘宝店推荐知乎 编辑:程序博客网 时间:2024/05/20 05:30

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.


public class Solution {    public List<String> letterCombinations(String digits) {List<String> result = new ArrayList<String>();  if(digits.length()==0) return result;        String[] map = new String[10];          map[0] = "";          map[1] = "";          map[2] = "abc";          map[3] = "def";          map[4] = "ghi";          map[5] = "jkl";          map[6] = "mno";          map[7] = "pqrs";          map[8] = "tuv";          map[9] = "wxyz";          int len = 0;        for(int i=0;i<digits.length();i++){        if(digits.charAt(i)!='0' && digits.charAt(i)!='1'){        len++;        }        }                       solve(0, map, result, 0, digits, new char[len]);                return result;    }void solve(int len,String[] map,List<String> result,int cur,String digits,char[] chars){if(chars.length==len){String str = new String(chars);result.add(str);return;}String cur_str = map[digits.charAt(cur)-'0'];if(cur_str.length()==0) solve(len, map, result, cur+1, digits, chars);else{for(int i=0;i<cur_str.length();i++){chars[len] = cur_str.charAt(i);solve(len+1, map, result, cur+1, digits, chars);}}}}


0 0