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