Menu
CoddyTech

Evaluate Reverse Polish Notation

ふつうスタックpython iconjava iconcpp iconc iconjs icon+10

逆ポーランド記法による算術式が、トークンの配列として与えられます。この記法では、各演算子は2つのオペランドの直後に置かれるため、3 4 + は 3 + 4 を意味し、3 4 + 2 * は (3 + 4) * 2 を意味します。括弧は必要ありません。各トークンは整数、または演算子 +、-、*、/ のいずれかです。

式を評価し、その値を返してください。除算では整数部分だけを取り、ゼロ方向に切り捨てます。7 / 2 は 3、-7 / 2 は -3 です。

関数

evalRPN(tokens: string-array) → integer
tokensstring-array
式の数値と演算子を順番に
戻り値integer
式の値

制約

  • 1 ≤ tokens.length ≤ 104
  • 各トークンは、+、-、*、/、または 10 進表記で書かれた -200 から 200 までの整数です。負の数には先頭にマイナス記号が付きます。
  • tokens は逆ポーランド記法における有効な式です。
  • ゼロによる除算は発生せず、すべての中間値と最終値は-231より大きく、231より小さいです。

例

入力
tokens = ["8", "3", "-", "4", "*"]
出力
20
説明
-は、その前にある2つの数値に順番どおり適用されます。8、次に3なので、-5ではなく5になります。次に、*はその5に4を掛けるので、20になります。

lock icon提出時に隠しテスト+18件

challenge icon

発展問題

意味が変わる場合にのみ括弧を追加して、(3 + 4) * 2 のような通常の表記で式を組み立て直せますか?

コードをリセット
def evalRPN(tokens):
    # ここにコードを書いてください
テストケース

ケース1

ケース2

ケース3

入力

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

期待値

20