逆波兰表达式。思路:
遍历字符串数组,遇到数字就存入栈中,遇到运算符就把栈顶两个元素取出来计算,得出结果后再推入栈顶。
class Solution {
public:
int evalRPN(vector<string>& tokens) {
if (tokens.empty()) return 0;
stack<int> stk;
int res = 0;
for (int i = 0; i < tokens.size(); ++ i)
{
string str = tokens[i];
if (str == "+" || str == "-" || str == "*" || str == "/")
{
int a = stk.top(); //取得栈顶的两个数
stk.pop();
int b = stk.top();
stk.pop();
if (str == "+") stk.push(b + a); //计算结果,再推入栈
else if (str == "-") stk.push(b - a);
else if (str == "*") stk.push(b * a);
else if (str == "/") stk.push(b / a);
}
else
{
stk.push(stoi(str)); //当前为数字就直接入栈,为运算符就出栈两个数来计算
}
}
res = stk.top(); //最后剩下的栈顶元素即是逆波兰表达式的计算结果
return res;
}
};
老哥入职了嘛
不是明年毕业才入职嘛😅
csp-j 2020 T3 表达式 运用本算法
细😎