首页 > 其他 > 详细

150. 逆波兰表达式求值

时间:2021-07-23 16:06:36      阅读:16      评论:0      收藏:0      [点我收藏+]
package leetcode;

import java.util.HashSet;
import java.util.Stack;

public class demo_150 {
    public int evalRPN(String[] tokens) {
        HashSet<String> hs=new HashSet<String>();
        hs.add("*");
        hs.add("+");
        hs.add("-");
        hs.add("/");
        Stack<String> stack=new Stack<String>();
        //将数组中的所有数据存放到栈中
        for(String s:tokens) {
            //如果是运算符取出栈中的前两个数字进行运算后在存入栈中
            if(hs.contains(s)) {
                int a=Integer.valueOf(stack.pop());
                int b=Integer.valueOf(stack.pop());
                int c=0;
                if(s.equals("*")) {
                    c=b*a;
                }
                if(s.equals("+")) {
                    c=b+a;
                }
                if(s.equals("/")) {
                    c=b/a;
                }
                if(s.equals("-")) {
                    c=b-a;
                }
                stack.push(String.valueOf(c));
            }
            //数字直接放入栈中
            else {
                stack.push(s);
            }
        }
        System.out.println(stack.peek());
        return Integer.valueOf(stack.peek());
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        demo_150 d150=new demo_150();
        String[] tokens= {"10","6","9","3","+","-11","*","/","*","17","+","5","+"};
        d150.evalRPN(tokens);
    }
}

 

150. 逆波兰表达式求值

原文:https://www.cnblogs.com/Yshun/p/15048179.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!