Letter Combinations of a Phone Number

Key Idea

Solution

class Solution:
    def letterCombinations(self, digits: str) -> List[str]:
        # Inputs: str
        # Outputs: List[str]
        # Description:
            # Given string of combination 2-9, find possible combination formed
            # Size of string is output size, e.g. "23" = List[ List[2].. ]
        # Initialize
        number_mapping = {
            "1": "",
            "2": "abc",
            "3": "def",
            "4": "ghi",
            "5": "jkl",
            "6": "mno",
            "7": "pqrs",
            "8": "tuv",
            "9": "wxyz"
        }
        output_list = []
        input_index_pointer = 0

        # Iterate
        while input_index_pointer < len(digits):
            if input_index_pointer == 0:
                for character in number_mapping[digits[input_index_pointer]]:
                    output_list.append(character)
            else:
                output_index_pointer = 0
                new_output_list = []
                while output_index_pointer < len(output_list):
                    for character in number_mapping[digits[input_index_pointer]]:
                        new_output_list.append(output_list[output_index_pointer] + character)
                    output_index_pointer += 1
                output_list = new_output_list
            input_index_pointer += 1
        return output_list

Complexity