Menu
CoddyTech

Evaluate Reverse Polish Notation

MédioPilhapython iconjava iconcpp iconc iconjs icon+10

Você recebe uma expressão aritmética em notação polonesa reversa, como um array de tokens. Nessa notação, cada operador vem logo após seus dois operandos, então 3 4 + significa 3 + 4 e 3 4 + 2 * significa (3 + 4) * 2, sem necessidade de parênteses. Cada token é um número inteiro ou um dos operadores +, -, * e /.

Avalie a expressão e retorne seu valor. A divisão mantém apenas a parte inteira e trunca em direção a zero: 7 / 2 é 3 e -7 / 2 é -3.

Função

evalRPN(tokens: string-array) → integer
tokensstring-array
os números e operadores da expressão, em ordem
Retornainteger
o valor da expressão

Restrições

  • 1 ≤ tokens.length ≤ 104
  • Cada token é +, -, *, / ou um número inteiro de -200 a 200 escrito em decimal, com um sinal de menos à esquerda quando for negativo.
  • tokens é uma expressão válida em notação polonesa reversa.
  • Não ocorre divisão por zero, e todos os valores intermediários e finais são maiores que -231 e menores que 231.

Exemplos

Entrada
tokens = ["8", "3", "-", "4", "*"]
Saída
20
Explicação
O - é aplicado aos dois números que vêm antes dele, na ordem em que aparecem: 8 e depois 3, então resulta em 5, não em -5. Em seguida, * multiplica esse 5 por 4, resultando em 20.

lock icon+18 testes ocultos ao enviar

challenge icon

Para ir além

Você consegue reconstruir a expressão na notação comum, como (3 + 4) * 2, adicionando parênteses somente onde eles alteram o significado?

Redefinir código
def evalRPN(tokens):
    # Escreva o código aqui
Casos de teste

Caso 1

Caso 2

Caso 3

Entrada

tokens = ["8", "3", "-", "4", "*"]

Esperado

20