这道题主要是用stack栈来进行逆波兰式的算法描述,实现不是很难,不过注意string类型的一些基本函数,比如:stoi(),atoi()等。
#include <stack>
#include <stdlib.h>
class Solution {
public:
int evalRPN(vector<string> &tokens) {
stack<int> stas;
int ret=0,len=tokens.size();
int i,num1=0,num2=0,res=0;
for(i=0;i<len;i++)
{
if(tokens[i]=="+"||tokens[i]=="-"||tokens[i]=="*"||tokens[i]=="/")
{
num1=stas.top();
stas.pop();
num2=stas.top();
stas.pop();
if(tokens[i]=="+")
{
res=num1+num2;
stas.push(res);
}
else if(tokens[i]=="-")
{
res=num2-num1;
stas.push(res);
}
else if(tokens[i]=="*")
{
res=num1*num2;
stas.push(res);
}
else if(tokens[i]=="/")
{
res=(int)num2/num1;
stas.push(res);
}
else ;
}
else
{
stas.push(stoi(tokens[i]));
}
}
res=stas.top();
return res;
}
};
Leetcode:Evaluate Reverse Polish Notation
最新推荐文章于 2020-03-04 16:52:16 发布