Menu
CoddyTech

Decode Ways

Uma mensagem composta por letras maiúsculas foi codificada com A = 1, B = 2 e assim por diante até Z = 26, e os códigos foram escritos sem separadores. Dada a sequência de dígitos s, retorne quantas mensagens poderiam tê-la produzido.

Uma letra é lida a partir de um ou dois dígitos adjacentes, e um código nunca começa com 0: 06 não é 6, e um 0 isolado não é uma letra. Se nenhuma leitura funcionar, retorne 0.

Função

numDecodings(s: string) → integer
sstring
a sequência de dígitos a decodificar
Retornainteger
o número de mensagens de letras que são codificadas como s

Restrições

  • 1 ≤ s.length ≤ 100
  • s contém apenas os dígitos 0 a 9, e pode começar com 0.
  • Todo prefixo e todo sufixo de s têm menos de 231 leituras, então a resposta e todas as contagens que você construir ao longo do caminho cabem em um inteiro de 32 bits com sinal.

Exemplos

Entrada
s = "2611"
Saída
4
Explicação
As quatro leituras são 2 6 1 1 (BFAA), 26 1 1 (ZAA), 2 6 11 (BFK) e 26 11 (ZK). Os dígitos do meio nunca formam um par, porque 61 é maior que 26.
challenge icon

Para ir além

E se s também puder conter *, que representa qualquer dígito de 1 a 9? Você consegue contar as leituras em tempo O(n), módulo 10^9+7?

Redefinir código
def numDecodings(s):
    # Escreva o código aqui

Teste #1

Teste #2

Teste #3

Argumento

s = "2611"

Saída Esperada

4