力扣每日一题150 逆波兰式

class Solution {
int num=0;
stack<int>q;
int a1=0;
int a2=0;
int flag=0;
public:
    int evalRPN(vector<string>& tokens) {
      for(int i=0;i<tokens.size();i++)
      {
          num=0;
          int j=0;
          if(tokens[i]!="+"&&tokens[i]!="-"&&tokens[i]!="*"&&tokens[i]!="/")
          {
             if(tokens[i][0]=='-') {flag=1; j=1;}
              for(j;j<tokens[i].size();j++)
                  num=num*10+tokens[i][j]-'0';
             if(flag==1) num=-num;
             flag=0;
                q.push(num);
          }
           else{
             a1=q.top();q.pop();
             a2=q.top();q.pop();
             if(tokens[i]=="+")  q.push(a2+a1);
             if(tokens[i]=="-")  q.push(a2-a1);
             if(tokens[i]=="*")  q.push(a2*a1);
             if(tokens[i]=="/")  q.push(a2/a1);

           }         
      }
      return q.top();
    }
};
上一篇:BAT题库 | 机器学习面试1000题系列(第146~150题)


下一篇:ACWing 150 括号画家