NC216 逆波兰表达式求值

逆波兰表达式求值

https://www.nowcoder.com/practice/885c1db3e39040cbae5cdf59fb0e9382?tpId=196&tqId=39409&rp=1&ru=/exam/oj&qru=/exam/oj&sourceUrl=%2Fexam%2Foj%3Fpage%3D1%26pageSize%3D50%26search%3D%26tab%3D%25E7%25AE%2597%25E6%25B3%2595%25E7%25AF%2587%26topicId%3D196&difficulty=undefined&judgeStatus=undefined&tags=581&title=

用栈求后缀表达式的值

class Solution {
public:
    int evalRPN(vector<string>& tokens) {
       int n=tokens.size();
       //用一个栈来求后缀表达式
       stack<int>stack1;
       int t1,t2;
       //遍历整个后缀表达式
       //如果是+-*/则将栈顶的两个元素弹出,求出对应的值后将该值压入栈中,注意顺序,+和*顺序换一下没有区别,-/交换位置后就有区别
       for(int i=0;i<n;i++){
        if(tokens[i]=="+"){
            t1=stack1.top();
            stack1.pop();
            t2=stack1.top();
            stack1.pop();
            stack1.push(t1+t2);
        }else if(tokens[i]=="-"){
            t1=stack1.top();
            stack1.pop();
            t2=stack1.top();
            stack1.pop();
            stack1.push(t2-t1);
        }else if(tokens[i]=="*"){
             t1=stack1.top();
            stack1.pop();
            t2=stack1.top();
            stack1.pop();
            stack1.push(t1*t2);
        }else if(tokens[i]=="/"){
             t1=stack1.top();
            stack1.pop();
            t2=stack1.top();
            stack1.pop();
            stack1.push(t2/t1);
        }else{
            //stoi函数可以将对应的字符串转化为数字
            stack1.push(stoi(tokens[i]));
        }
       }
       return stack1.top();
    }
};
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务