150. Evaluate Reverse Polish Notation

Evaluate the value of anarithmetic 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

    翻译: 在逆向波兰记法中评估算术表达式的值。有效运算符为+ - */每个操作数可以是整数或另一个表达式。

    题目就是栈那一节的表达式求值,但是它稍微简单一点。没有括号,不用考虑符号的优先级别。还有注意一点的就是,LeetCode的jdk是1.7以下,所以不支持switch表达式是字符串。代码如下:

public class Solution {

    public int evalRPN(String[] tokens) {

           String op="+-*/";

           Stack<String> stack=new Stack();

           for(String s: tokens){

                 if(op.contains(s)){

                      int a=Integer.valueOf(stack.pop());

                      int b=Integer.valueOf(stack.pop());

                      int index=op.indexOf(s);

                      switch(index){

                      case 0:

                            stack.push(String.valueOf(a+b));

                            break;

                      case 1:

                            stack.push(String.valueOf(b-a));

                            break;

                      case 2:

                            stack.push(String.valueOf(a*b));

                            break;

                      case 3:

                            stack.push(String.valueOf(b/a));

                            break;

                      }

                 }else{

                      stack.push(s);

                 }

    }

    return Integer.valueOf(stack.pop());

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值