~/DHRUVUpskilling
← board/DSA/subset/dsa-subset-03
Solved·17 Sept

Letter Combinations of a Phone Number

DifficultyMedium
Patternsubset
TrackDSA
tl;dr

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.

full write-up

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 digits to letters (just like on the telephone buttons) is given below. Note that 1 does not map to any letters.

Example 1:

Input: digits = "23" Output: ["ad","ae","af","bd","be","bf","cd","ce","cf"] Example 2:

Input: digits = "2" Output: ["a","b","c"]

Constraints:

1 <= digits.length <= 4 digits[i] is a digit in the range ['2', '9'].

Solution


var letterCombinations = function(digits) {
    if (!digits) {
        return [];
    }
    
    const phoneMap = {
        '2': 'abc', '3': 'def', '4': 'ghi', '5': 'jkl',
        '6': 'mno', '7': 'pqrs', '8': 'tuv', '9': 'wxyz'
    };
    
    const result = [];
    
    function backtrack(index, path) {
        if (path.length === digits.length) {
            result.push(path);
            return;
        }
        
        for (const letter of phoneMap[digits[index]]) {
            backtrack(index + 1, path + letter);
        }
    }
    
    backtrack(0, "");
    return result;
};