150. 逆波蘭表示式求值 (棧 難度2) 詳細題解
阿新 • • 發佈:2019-01-14
非常經典的棧題目了, 遇見數字就入棧, 遇見符號就取出棧首的兩個數字作相應運算再入棧.
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() ;
}
};