Given a string containing digits from
2-9
inclusive, 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. Note that 1 does not map to any letters.
Example:
Input: "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.
1 class Solution { 2 public List<String> letterCombinations(String digits) { 3 LinkedList<String> res = new LinkedList<String>(); 4 if(digits.isEmpty()) return res; 5 String[] mapping = new String[] {"0", "1", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"}; 6 res.add(""); 7 for(int i=0;i<digits.length();i++){ 8 int x=Character.getNumericValue(digits.charAt(i)); 9 while(res.peek().length()==i){ 10 String t = res.remove(); 11 for (char s :mapping[x].toCharArray()) 12 res.add(t+s); 13 } 14 } 15 return res; 16 } 17 }