Leetcode 17 Letter Combinations of a Phone Number

Given a string containing digits from 2-9 inclusive, return all possible letter combinations that the number could represent. Return the answer in any order.

A mapping of digit to letters (just like on the telephone buttons) is given below. Note that 1 does not map to any letters.

image

Input: digits = "23"
Output: ["ad","ae","af","bd","be","bf","cd","ce","cf"]


Input: digits = ""
Output: []


Input: digits = "2"
Output: ["a","b","c"]

  • Soruda bizden telefonlarda olan kodlama sistemine göre verilen rakamların kaç farklı harf kombinasyonu olduğunu bulmamızı istiyor.
  • Görece kolay bir soru bruteforce ile tüm harf kombinasyonlarını bulabiliriz.
  • Yapacağımız ilk şey sayıların karşılığı olan harfleri bir listede tutmak.
  • Daha sonra backtrack adında yazdığımız yardımcı fonksiyonu rekursif olarak çağırarak kombinasyonları buluruz.
        def letterCombinations(self, digits: str) -> List[str]:
        res = []
        digitToChar = { "2" : "abc",
                        "3" : "def",
                        "4" : "ghi",
                        "5" : "jkl",
                        "6" : "mno",
                        "7" : "qprs",
                        "8" : "tuv",
                        "9" : "wxyz"}
        
        def backtrack (i, curStr):
            if len(curStr) == len(digits):
                res.append(curStr)
                return
            
            for c in digitToChar[digits[i]]:
                backtrack(i + 1, curStr + c)
        
        if digits:
            backtrack(0, "")
        
        return res