题目考察的知识点:栈是一种特殊的线性表,是限定仅在一端(通常是表尾),进行插入和删除操作的线性表。又称为后进先出(Last In First Out)的线性表,简称LIFO结构。

题目解答方法的文字分析:将数组中的数据入栈,如果遇到符号,则出数据并进行相加,再入数据,直到遍历完。

本题解析所用的编程语言:c++

int calculatePostfix(const vector<string>& tokens)
{
    // write code here
    stack<int> st;
    for (auto& str : tokens)
    {
        if (str == "+" || str == "-" || str == "*" || str == "/")
        {
            int right = st.top();
            st.pop();
            int left = st.top();
            st.pop();
            switch (str[0])
            {
            case '+':
                st.push(left + right);
                break;
            case '-':
                st.push(left - right);
                break;
            case '*':
                st.push(left * right);
                break;
            case '/':
                st.push(left / right);
                break;
            }
        }
        else
        {
            st.push(stoi(str));
        }
    }
    return st.top();
}