17. Letter Combinations of a Phone Number
https://leetcode.com/problems/letter-combinations-of-a-phone-number/
Recursive Solution:
class Solution:
def letterCombinations(self, digits: str) -> List[str]:
if len(digits) == 0:
return []
d=["#","#","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"]
def getCombo(digits):
res = []
if len(digits) == 0:
return [""]
nxt= getCombo(digits[1:])
for curr in nxt:
for ch in d[int(digits[0])]:
res.append(ch+curr)
return res
return getCombo(digits)
Iterative Solution:
O(N^3)
class Solution:
def letterCombinations(self, digits: str) -> List[str]:
if len(digits) == 0:
return []
d=["#","#","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"]
res= [""]
for digit in digits:
word = d[int(digit)]
tmp = []
for curr in res:
for ch in word:
tmp.append(curr+ch)
res = tmp
return res
FIFO Queue Approach (instead of creating tmp arr, treat it as queue)
class Solution:
def letterCombinations(self, digits: str) -> List[str]:
if len(digits) == 0:
return []
d=["#","#","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"]
res= [""]
for i,digit in enumerate(digits):
word = d[int(digit)]
while len(res[0]) == i:
curr = res.pop(0)
for ch in word:
res.append(curr+ch)
return res
Last updated
Was this helpful?