[leetcode]Letter Combinations of a Phone Number

来源:互联网 发布:古墓丽影9mac意外退出 编辑:程序博客网 时间:2024/06/17 22:24

问题描述:

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 List<String> letterCombinations(String digits) {  //Java        List<String> result = new ArrayList<String>();        result.add("");        if(digits.length() == 0)            return result;        Map<Integer,String> nums = new HashMap<Integer,String>();        nums.put(2,"abc");        nums.put(3,"def");        nums.put(4,"ghi");        nums.put(5,"jkl");        nums.put(6,"mno");        nums.put(7,"pqrs");        nums.put(8,"tuv");        nums.put(9,"wxyz");                Set<String> comb = new HashSet<String>();        for(int i = 0; i < digits.length(); i++){            Set<String> temp = new HashSet<String>();            if(comb.size() == 0){                String str = nums.get(Integer.valueOf(digits.substring(i,i+1)));                for(int j = 0; j < str.length(); j++){                    temp.add(str.substring(j,j+1));                }            }            else{                String str = nums.get(Integer.valueOf(digits.substring(i,i+1)));                for(int j = 0; j < str.length(); j++){                    String ch = str.substring(j,j+1);                    for(String item: comb){                        temp.add(item+ch);                    }                }            }            comb.clear();            comb = temp;                    }        List<String> list = new ArrayList<String>();        for(String item: comb){            list.add(item);        }        return list;    }


0 0