1. 程式人生 > >150. 逆波蘭表示式求值 (棧 難度2) 詳細題解

150. 逆波蘭表示式求值 (棧 難度2) 詳細題解

題目連結

在這裡插入圖片描述
非常經典的棧題目了, 遇見數字就入棧, 遇見符號就取出棧首的兩個數字作相應運算再入棧.

class Solution {
public:
    int evalRPN(vector<string>& tokens) {
        stack<int> ans;
        
        for(int i = 0; i < tokens.size(); i++){
            if(tokens[i]=="+" || tokens[i]=="-" || tokens[i]=="*" || tokens[
i]=="/"){ int tmp1 = ans.top(); ans.pop(); int tmp2 = ans.top(); ans.pop(); if(tokens[i]=="+") ans.push(tmp2+tmp1); else if(tokens[i]=="-") ans.push(tmp2-tmp1); else if(tokens[
i]=="*") ans.push(tmp2*tmp1); else if(tokens[i]=="/") ans.push(tmp2/tmp1); } //取出棧首兩個元素運算併入棧 else ans.push(stoi(tokens[i])); } return ans.top() ; } };