原题链接:https://oj.leetcode.com/problems/evaluate-reverse-polish-notation/
题目大意:给出逆波兰式,然后求其结果。
解题方法:单个栈
思路:遍历逆波兰式,若为数字。则入栈。若为操作符。则弹出栈顶的2个元素,然后将其相应该操作符的结果入栈。遍历完毕后,栈中元素就是所求结果。
时间复杂度:O(N) 空间复杂度 : O(1)
class Solution { public: int evalRPN(vector<string> &tokens) { if(tokens.empty()) return 0; stack<int> s; int op1=0,op2=0; for(int i=0;i<tokens.size();i++) { if(tokens[i]=="+") { op2=s.top();s.pop();op1=s.top();s.pop();s.push(op1+op2); } else if(tokens[i]=="-") { op2=s.top();s.pop();op1=s.top();s.pop();s.push(op1-op2); } else if(tokens[i]=="*") { op2=s.top();s.pop();op1=s.top();s.pop();s.push(op1*op2); } else if(tokens[i]=="/") { op2=s.top();s.pop();op1=s.top();s.pop();s.push(op1/op2); } else s.push(atoi(tokens[i].c_str())); } return s.top(); } };