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”].
給定一個數(shù)字字符串,返回數(shù)字可能代表的所有可能的字母組合。
下面給出了數(shù)字到字母的映射(就像在電話按鈕上)。
輸入:數(shù)字字符串“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; }}這里的巧妙之處是:先把第一個數(shù)字對應的字母加入到list中,然后依次取出和第二個數(shù)字對應的字母結合再加入到list中,….