Evaluate Reverse Polish Notation --leetcode

来源:互联网 发布:小脑袋调价软件 编辑:程序博客网 时间:2024/05/16 07:34

原题链接: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();    }};


5 0