[LeetCode] Evaluate Reverse Polish Notation

题目链接

int evalRPN(vector<string> &tokens) {
	vector<int> vals;
	for(int i = 0; i < tokens.size(); i++)
	{            
		if(tokens[i] == "+" || tokens[i] == "-" || tokens[i] == "*" || tokens[i] == "/")
		{
			int right_val = vals.back();
			vals.pop_back();
			int left_val = vals.back();
			vals.pop_back();
			int new_val;
			char operate = tokens[i][0];
			switch(operate)
			{
				case '+':
				new_val = left_val + right_val;
				vals.push_back(new_val);
				break;
				case '-':
				new_val = left_val - right_val;
				vals.push_back(new_val);
				break;                    
				case '*':
				new_val = left_val * right_val;
				vals.push_back(new_val);                        
				break;
				case '/':
				new_val = left_val / right_val;
				vals.push_back(new_val);                        
				break;                           
			}                               
		}
		else
		{
			stringstream stream;
			stream<<tokens[i];
			int val;
			stream>>val;
			vals.push_back(val);
		}
	}
	return vals.back();
}

string数字串转换成int的方法:

#include <sstream>
using namespace std;

stringstream stream;
string str = "-123";
stream<<str;
int val;
stream>>val;


你可能感兴趣的:(LeetCode,刷题)