(詳細圖解) 逆波蘭表示式

殤&璃發表於2020-11-23

在這裡插入圖片描述

下面給出圖解:

在這裡插入圖片描述

下面給出程式碼:

class Solution {
public:
    int evalRPN(vector<string>& tokens) {
        stack<int> st;

        //迴圈遍歷表示式  範圍for
        for(const auto& str : tokens) {
            if(str == "+" || str == "-"
            || str == "*" || str == "/") {
                //遇到操作符
                //取出兩個運算元
                int right = st.top();
                st.pop();
                int left = st.top();
                st.pop();

                //計算結果併入棧
                if(str == "+")
                    st.push(left + right);
                else if(str == "-")
                    st.push(left - right);
                else if(str == "*")
                    st.push(left * right);
                else 
                    st.push(left / right);
            }
            else {
                //遇到運算元
                //入棧, 注意要轉換成整型, 使用string的庫函式即可
                st.push(stoi(str));
            }
        }

        //棧頂即為最後的結果
        return st.top();
    }
};

相關文章