经典的用栈求逆波兰表达式的值,本次的实验倒也不难没有涉及优先级等的东西,如果加入括号符等的就比较麻烦了,代码如下
class Solution {
public:
bool isNum(string& a){
return !(a=="+" || a=="-" || a=="*" || a=="/");
};
int evalRPN(vector<string>& tokens) {
stack<int> res;
for(int i=0;i<tokens.size();i++){
if(isNum(tokens[i])){
res.push(stoi(tokens[i]));
}else{
int a = res.top();
res.pop();
int b = res.top();
res.pop();
switch(tokens[i][0]){
case '+':
res.push(b+a);
break;
case '-':
res.push(b-a);
break;
case '*':
res.push(b*a);
break;
case '/':
res.push(b/a);
break;
}
}
}
return res.top();
}
};
整个的思路为判定是数字还是运算符,然后进行对应的入栈和出栈