Menu
CoddyTech

Decode Ways

Uma mensagem escrita em letras maiúsculas foi transformada em dígitos usando o código A = 1, B = 2 e assim por diante até Z = 26, e os códigos foram escritos um após o outro, sem separadores. Você recebe a sequência de dígitos s. Retorne quantas mensagens diferentes poderiam tê-la produzido.

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

Função

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

Restrições

  • 1 ≤ s.length ≤ 100
  • s contém apenas os dígitos de 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ê calcular 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.

lock icon+25 testes ocultos ao enviar

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), retornando a contagem módulo 10^9+7?

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

Caso 1

Caso 2

Caso 3

Entrada

s = "2611"

Esperado

4