0017 - Letter Combinations of a Phone Number
0017 - Letter Combinations of a Phone Number
Given a string containing digits from 2-9 inclusive, return all possible letter combinations that the number could represent. Return the answer in any order.
A mapping of digit to letters (just like on the telephone buttons) is given below. Note that 1 does not map to any letters.
Examples
Input: digits = "23" Output: ["ad","ae","af","bd","be","bf","cd","ce","cf"]
Input: digits = "" Output: []
Input: digits = "2" Output: ["a","b","c"]
Constraints
0 <= digits.length <= 4
digits[i] is a digit in the range ['2', '9'].
Java Solution (Backtracking)
class Solution {
public List<String> letterCombinations(String digits) {
if(digits.length() == 0) return new ArrayList<>();
String[] dict = new String[] {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz" };
List<String> results = new ArrayList<>();
backtrack(results, digits.toCharArray(), "", dict);
return results;
}
private void backtrack(List<String> results, char[] digits, String s, String[] dict) {
if(s.length() == digits.length) {
results.add(s);
return;
}
int i = s.length();
int digit = digits[i] - '0';
for(char c : dict[digit].toCharArray()) {
backtrack(results, digits, s + Character.toString(c), dict);
}
}
}
Last updated