题目
给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。
请你计算该表达式。返回一个表示表达式值的整数。
逆波兰这个也看多了,就是依次取栈顶的两个数进行运算。
考虑到用栈的数据结构即可,切记运算好的结果要重新入栈
cpp
class Solution {
public:
int evalRPN(vector<string>& tokens) {
stack<long long> st;
for (int i = 0; i < tokens.size(); i++) {
if (tokens[i] == "+" || tokens[i] == "-" || tokens[i] == "*" || tokens[i] == "/") {
long long b = st.top();
st.pop();
long long a = st.top();
st.pop();
long long cal;
if (tokens[i] == "+") cal = a + b;
else if (tokens[i] == "-") cal = a - b;
else if (tokens[i] == "*") cal = a * b;
else if (tokens[i] == "/") cal = a / b;
st.push(cal); // 计算结果放回栈!
}else {
st.push(stoll(tokens[i]));
}
}
return st.top(); // 最后栈顶就是答案
}
};