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; }
[leetcode]Letter Combinations of a Phone Number
原文地址:http://blog.csdn.net/chenlei0630/article/details/41811235