# 17. Letter Combinations of a Phone Number

### Approach 1: Generating all combinations one by one

```python
class Solution:
    def letterCombinations(self, digits):
        """
        https://leetcode.com/problems/letter-combinations-of-a-phone-number/description/
        :type digits: str
        :rtype: List[str]
        """
        mapping = {'1':[],'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']}
        if digits == '':
            return []
        else:
            ans = mapping[digits[0]]
            for i in range(1,len(digits)):
                l = []
                for j in mapping[digits[i]]:
                    for k in ans:
                        l.append(k+j)
                ans = l
        return ans
```

This solution goes over each number in digits and appends the letters on that position to the end of all the existing strings in `ans`&#x20;

For example, `digits = '23'`, then `ans = ['a','b','c'] # initialised from line 12`

In the for loop, I come to `'3'` and then for every element in `ans` I append a letter from digit `'3'` which means `ans` becomes `["ad","ae","af","bd","be","bf","cd","ce","cf"]`

> **Time Complexity:** *O(N),* where N is the total number of possible combinations that get returned
>
> **Space Complexity:** *O(N)*
