[Leet Code] Evaluate Reverse Polish Notation


こんにちは!
土曜日から日曜日までクラブハッカー口調でやっていたので、今ポスター形式で皆さんに会いに来ました
今日、4週目の4番目のアルゴリズムEvaluate Reverse Polish Notationプールを作成します.

質問する



サマリ
与えられたtokensの後方演算の値を返します.

初志


本当に最初の方法はスタックを利用する方法です
これはとても良い積み重ねの問題だと思います.つまり、問題を解いてから受け入れる問題です.
では、短くて簡単ですが、次はプールを作成します.

コードの説明

Stack<Integer> calculation = new Stack<>();
Stackを宣言して演算します.
for (String token: tokens) {
    if (token.equals("+")) {
        int a = calculation.pop();
        int b = calculation.pop();
        calculation.push(b + a);
    } else if (token.equals("-")) {
        int a = calculation.pop();
        int b = calculation.pop();
        calculation.push(b - a);
    } else if (token.equals("*")) {
        int a = calculation.pop();
        int b = calculation.pop();
        calculation.push(b * a);
    } else if (token.equals("/")) {
        int a = calculation.pop();
        int b = calculation.pop();
        calculation.push(b / a);
    } else {
        calculation.push(Integer.parseInt(token));
    }
}
次に、入力されたtokensをfor文としてループし、tokenが演算子である場合、スタック内の最初の2つの値を計算し、演算子でない場合、数値に変換してスタックに保存します.
順序は重要で、2番目の数字popの前に演算を行うだけで、後続の演算が正しく行われます.

完全なコード

class Solution {
    public int evalRPN(String[] tokens) {
        Stack<Integer> calculation = new Stack<>();

        for (String token: tokens) {
            if (token.equals("+")) {
                int a = calculation.pop();
                int b = calculation.pop();
                calculation.push(b + a);
            } else if (token.equals("-")) {
                int a = calculation.pop();
                int b = calculation.pop();
                calculation.push(b - a);
            } else if (token.equals("*")) {
                int a = calculation.pop();
                int b = calculation.pop();
                calculation.push(b * a);
            } else if (token.equals("/")) {
                int a = calculation.pop();
                int b = calculation.pop();
                calculation.push(b / a);
            } else {
                calculation.push(Integer.parseInt(token));
            }
        }

        return calculation.pop();
    }
}

の最後の部分


ハークトンはよくできていて、体が急激に悪いので、しばらくしていません.
ハッカーの口調の後記を残すかどうか考えていますが、それを加えるべきかどうか分かりません.ほほほ
とにかく、今回の位置づけを読んでいただき、ありがとうございました:)