1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| class Solution { public List<String> letterCombinations(String digits) { if (digits == null || digits.length() < 1) { return new ArrayList<>(); } char[][] digitLetters = {{'a','b','c'}, {'d','e','f'}, {'g','h','i'}, {'j','k','l'}, {'m','n','o'}, {'p','q','r','s'}, {'t','u','v'}, {'w','x','y','z'}}; List<String> combinations = new ArrayList<>(); int digit = digits.charAt(0) - '0'; char[] letters = digitLetters[digit - 2]; for (int j = 0; j < letters.length; j++) { combinations.add(String.valueOf(letters[j])); } int length = digits.length(); for (int i = 1; i < length; i++) { digit = digits.charAt(i) - '0'; letters = digitLetters[digit - 2]; List<String> newCombinations = new ArrayList<>(); for (String combination : combinations) { for (int j = 0; j < letters.length; j++) { newCombinations.add(combination + letters[j]); } } combinations = newCombinations; } return combinations; } }
|