Leetcode 150:逆波兰表达式求值

给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。

请你计算该表达式。返回一个表示表达式值的整数。

示例 1:

复制代码
输入:tokens = ["2","1","+","3","*"]
输出:9
解释:该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9

示例 2:

复制代码
输入:tokens = ["4","13","5","/","+"]
输出:6
解释:该算式转化为常见的中缀算术表达式为:(4 + (13 / 5)) = 6
java 复制代码
import java.util.Stack;

public class title150 {
    public static void main(String[] args) {
        String[] tokens = {"2", "1", "+", "3", "*"};
        System.out.println(evalRPN(tokens));
    }

    public static int evalRPN(String[] tokens) {
        Stack<Integer> stack = new Stack<>();
        Integer a, b, c;
        for (int i = 0; i < tokens.length; i++) {
            //1.先判断是否为四种符号
            String s = tokens[i];
            if (s.equals("+")) {
                //需要将字符串形式的数字转化为int型
                a = stack.pop();
                b = stack.pop();
                c = a + b;
                stack.push(c);
            } else if (s.equals("-")) {
                a = stack.pop();
                b = stack.pop();
                c = b - a;
                stack.push(c);
            } else if (s.equals("*")) {
                a = stack.pop();
                b = stack.pop();
                c = a * b;
                stack.push(c);
            } else if (s.equals("/")) {
                a = stack.pop();
                b = stack.pop();
                c = b / a;
                stack.push(c);
            } else {
                //先将字符串数字转换为int,再入栈
                stack.push(Integer.valueOf(s));
            }
        }
        return stack.pop();
    }
}
相关推荐
Linux运维技术栈17 分钟前
Terraform 从入门到实战:历史、原理、功能与阿里云/Azure 上手指南
运维·阿里云·kubernetes·azure·terraform
Dcs18 分钟前
代码评审还能更好!
java
wdfk_prog19 分钟前
[Linux]学习笔记系列 -- lib/dump_stack.c 栈回溯打印(Stack Trace Dumping) 内核调试与错误诊断的基石
linux·运维·服务器·c语言·笔记·学习
不可能的是25 分钟前
Docker与Ubuntu环境下apt-get报错完全解决指南
运维
CoovallyAIHub26 分钟前
医药、零件、饮料瓶盖……SuperSimpleNet让质检“即插即用”
深度学习·算法·计算机视觉
dragoooon3429 分钟前
[优选算法专题二滑动窗口——串联所有单词的子串]
数据结构·c++·学习·算法·leetcode·学习方法
刃神太酷啦30 分钟前
C++ 异常处理机制:从基础到实践的全面解析----《Hello C++ Wrold!》(20)--(C/C++)
java·c语言·开发语言·c++·qt·算法·leetcode
蓝倾97632 分钟前
小红书获取用户作品列表API接口操作指南
java·服务器·前端·python·电商开放平台·开放api接口
Seven9738 分钟前
剑指offer-28、数组中出现次数超过⼀半的数字
java
浮游本尊38 分钟前
Java学习第19天 - 分布式缓存与Redis高级应用
java