您的位置:首页 > 编程语言 > Lua

LeetCode OJ--Evaluate Reverse Polish Notation

2014-02-14 21:24 375 查看
http://oj.leetcode.com/problems/evaluate-reverse-polish-notation/

栈使用

#include <iostream>
#include <string>
#include <vector>
#include<stack>
using namespace std;

class Solution {
public:
int toNum(string str)
{
int sum = 0;
int i = 0;
int flagPositiveOrNegative = 1;;
if(str[0] == '-')
{
flagPositiveOrNegative = -1;
i = 1;
}
for( i;i<str.size();i++)
{
sum *= 10;
sum += str[i] - '0';
}
return sum * flagPositiveOrNegative;
}
int evalRPN(vector<string> &tokens) {
if(tokens.size()==0)
return 0;
int i = 0;
stack<int> myStack;
while(i<tokens.size())
{
if(tokens[i] == "+" || tokens[i] == "-" || tokens[i]=="*" ||tokens[i] == "/" )
{
int num1 = myStack.top();
myStack.pop();
int num2 = myStack.top();
myStack.pop();
if(tokens[i] == "+")
myStack.push(num1+num2);
if(tokens[i] == "-")
myStack.push(num2-num1);
if(tokens[i] == "*")
myStack.push(num1*num2);
if(tokens[i] == "/")
myStack.push(num2/num1);
}
else
{
myStack.push(toNum(tokens[i]));
}
i++;
}
return myStack.top();
}
};

int main()
{
Solution myS;
vector<string> input;
input.push_back("3");
input.push_back("-4");
input.push_back("+");
cout<<myS.evalRPN(input);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: