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”].
给定一个数字字符串,返回数字可能代表的所有可能的字母组合。
下面给出了数字到字母的映射(就像在电话按钮上)。
输入:数字字符串“23” 输出: [“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”]。
代码:
public class Solution { public List<String> letterCombinations(String digits) { LinkedList<String> list = new LinkedList<>(); String[] mapping = {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"}; if(digits == null || digits.equals("")){ return list; } list.add(""); for(int i =0; i<digits.length(); i++){ int c = Character.getNumericValue(digits.charAt(i)); if(c == 1 || c == 0) return new LinkedList<>(); while(list.peek().length() == i){ String tmp = list.remove(); for(char s : mapping[c].toCharArray()){ list.add(tmp + s); } } } return list; }}这里的巧妙之处是:先把第一个数字对应的字母加入到list中,然后依次取出和第二个数字对应的字母结合再加入到list中,….