算法1
思路:用栈存,涉及stl里面的unordered_set()相当于一个容器,用于存放运算符号,stio()函数用于将字符串转化成int
遇见数字压栈,遇见符号弹栈
C++ 代码
class Solution {
public:
stack<int> stk;//定义一个栈
void eval(string s)//进行加减乘除操作
{
int b=stk.top();//先把序列二个元素抠出来
stk.pop();
int a=stk.top();//把序列第一个元素抠出来
stk.pop();
if(s=="+") stk.push(a+b);
else if(s=="-")stk.push (a-b);
else if(s=="*")stk.push(a*b);
else stk.push(a/b);
}
int evalRPN(vector<string>& tokens) {
unordered_set<string>S{"+","-","*","/"};//先把加减乘除存起来
//补:unordered_set()函数相当于一个集合,可以增删查
for(auto& s:tokens)
{
if(S.count(s)) eval(s);//如果是符号的话,就进行运算
else stk.push(stoi(s));//否则讲数字压进栈,stoi是将字符串转换成int
}
return stk.top();
}
};