LetterCombinationsPhoneNumber

Published at 2021-12-03

class Solution:
    def letterCombinations(self, digits: str) -> List[str]:
        if digits == '': return []
        keyPad = ['','','abc','def', "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"]
        combinations = ['']
        for digit in digits:
            canPush = keyPad[int(digit)]
            temp = []
            for combination in combinations:
                # print(combination)
                for item in canPush:
                    # print(combination+item)
                    temp.append(combination+item)
            combinations = temp


        return combinations
/**
 * @param {string} digits
 * @return {string[]}
 */
var letterCombinations = function(digits) {
    if(digits.length === 0) return [];
       
    const map = {
        2: ['a', 'b', 'c'],
        3: ['d', 'e', 'f'],
        4: ['g', 'h', 'i'],
        5: ['j', 'k', 'l'],
        6: ['m', 'n', 'o'],
        7: ['p', 'q', 'r', 's'],
        8: ['t', 'u', 'v'],
        9: ['w', 'x', 'y', 'z'],
    };
    
    const func=(idx, curr, res)=>{
        if(idx === digits.length){
            res.push(curr);
            return res;
        }
        for(const x of map[digits[idx]]){
            func(idx+1, curr+x, res);
        }
        return res
    }
    return func(0, '', []);
};