[LeetCode en Python] 17 (M) combinaciones de letras de un número de teléfono en la combinación teléfono carta número

tema:

https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/

Dada una cadena que sólo contiene caracteres numéricos 2-9, puede devolver toda carta combinaciones indicadas.
Dada mapa digital de las cartas de la siguiente manera (la misma clave de teléfono).
Nota 1 no corresponde a ningún alfabeto.

Ejemplo:

De entrada: "23"
salidas :. [ "anuncios", " AE", "AF", "bd", "será", "BF", "CD", "CE", "cf"]
Descripción:
A pesar de lo anterior la respuesta se basa en orden lexicográfico, pero se puede elegir el orden de salida de la respuesta.

Ideas de resolución de problemas

DFS rutina estándar, DFS atención () antes y después de la línea de tratamiento.

código

class Solution:
    def letterCombinations(self, digits: str) -> List[str]:
        # - sanity check
        if not digits:
            return []

        # - digit -> chars
        digit_dict = {
            '2': 'abc',
            '3': 'def',
            '4': 'ghi',
            '5': 'jkl',
            '6': 'mno',
            '7': 'pqrs',
            '8': 'tuv',
            '9': 'wxyz'
        }

        res = []

        # - dfs
        def dfs(index, s):
            # - return
            if index == len(digits):
                res.append(s)
                return

            # - for every branches
            for c in digit_dict[digits[index]]:
                s += c
                dfs(index+1, s)
                s = s[:-1]
        
        # - from digits[0]
        dfs(0, '')

        return res

Supongo que te gusta

Origin www.cnblogs.com/journeyonmyway/p/12543425.html
Recomendado
Clasificación