【evaluate-reverse-polish-notation】

Evaluate the value of an arithmetic expression in Reverse Polish Notation.

Valid operators are+,-,*,/. Each operand may be an integer or another expression.

Some examples:

  ["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9
  ["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6
题意:逆波兰应用,很明显要考察的是栈;要注意的是,就是新来的符号,将栈中两个值取出进行操作。再放回栈中。
此时先取出的num2,后取出的是num1;进行num1和num2的操作;
class Solution
{
public:
	int evalRPN(vector<string> &tokens)
	{
		if (tokens.empty())
		{
			return 0;
		}

		stack<int> st;

		for (int i=0; i<tokens.size(); i++)
		{
			string s = tokens[i];
			if (s =="+" || s=="-"
				|| s=="*" || s=="/")
			{
				if (st.size()<2)
				{
					return 0;
				}
				int num2 = st.top();
				st.pop();

				int num1 = st.top();
				st.pop();
				int result = 0;

				if (s=="+")
				{
					result = num1 + num2;
				}
				if (s == "-")
				{
					result = num1 - num2;
				}
				if (s == "*")
				{
					result = num1 * num2;
				}
				if (s == "/")
				{
					result = num1 / num2;
				}

				st.push(result);
			}
			else
			{
				st.push(atoi(s.c_str()));
			}
		}
return st.top();

	}
};




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值