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