1. 程式人生 > 其它 >[leetcode] 17. Letter Combinations of a Phone Number

[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.

Example 1:

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

Example 2:

Input: digits = ""
Output: []

Example 3:

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

Constraints:

  • 0 <= digits.length <= 4
  • digits[i] is a digit in the range ['2', '9'].

思路

序列全排列的變種。

程式碼

python版本:

class Solution:
    def letterCombinations(self, digits: str) -> List[str]:
        num_map = {
            '1': '',
            '2': 'abc',
            '3': 'def',
            '4': 'ghi',
            '5': 'jkl',
            '6': 'mno',
            '7': 'pqrs',
            '8': 'tuv',
            '9': 'wxyz',
        }
        if not digits:
            return []
        res = ['']
        for num in digits:
            res = [r+letter for r in res for letter in num_map[num]]
        return res