The problem is simple to understand but great for practicing recursion. Each digit from 2 to 9 represents a set of letters, similar to the keys on a traditional phone keypad. For example, 2 maps to abc and 3 maps to def.
For the input "23", the expected combinations are:
["ad","ae","af","bd","be","bf","cd","ce","cf"]
💡 Approach
I first created a phoneMap object to store the letter mapping for each digit. Then, I used a recursive backtrack() function to build combinations step by step.
At every recursive call:
- Check whether all digits have been processed.
- If yes, add the current combination to the result.
- Otherwise, get the letters corresponding to the current digit.
- Loop through each letter and recursively continue with the next digit.
This approach explores every possible combination systematically and uses the call stack to manage the recursion.
📌 Complexity
If there are n digits and each digit can represent up to 4 letters, the time complexity is O(4ⁿ), with additional space required for recursion and the resulting combinations.
Another great reminder that backtracking is all about choosing, exploring, and then moving forward.
#LeetCode #JavaScript #DSA #Backtracking #Recursion #Coding #Programming #WebDevelopment #FrontendDevelopment #100DaysOfCode #ProblemSolving #Tech #SoftwareDevelopment