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. Cada operador vem logo depois de seus dois operandos, então 3 4 + significa 3 + 4 e 3 4 + 2 * significa (3 + 4) * 2, sem parênteses. Cada token é um número inteiro ou um dos operadores +, -, * e /.

Retorne o valor da expressão. A divisão 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.
  • Nenhuma divisão por zero ocorre, 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 a 8 e depois a 3, nessa ordem, então resulta em 5, não -5. Em seguida, * multiplica esse 5 por 4, resultando em 20.
challenge icon

Para ir além

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

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

Teste #1

Teste #2

Teste #3

Argumento

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

Saída Esperada

20