首页 > 其他分享 >leetcode150:逆波兰表达式求值

leetcode150:逆波兰表达式求值

时间:2022-08-24 21:13:46浏览次数:59  
标签:numStack num2 leetcode150 int res pop 求值 表达式 num1

package com.mxnet;

import java.util.Stack;

public class Solution150 {

    public static void main(String[] args) {

    }

    /**
     * 根据 逆波兰表示法,求表达式的值。
     *
     * 有效的算符包括+、-、*、/。每个运算对象可以是整数,也可以是另一个逆波兰表达式。
     *
     * 注意个整数之间的除法只保留整数部分。
     *
     * 可以保证给定的逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。
     * @param tokens
     * @return
     * 思路
     * 1. 使用栈结构保存所有数字
     * 2. 依次遍历所有元素,如果是元素符,则从栈中弹出元素进行运算
     * 3. 如果是数字则入栈
     * 4. 最后计算的结构将保存在栈顶
     */
    public int evalRPN(String[] tokens) {
        int res = 0;
        //定义栈保存数字
        Stack<Integer> numStack = new Stack<>();
        //遍历每个元素并进行判断执行
        for (String token : tokens) {
            if (token.equals("+")){
                int num1 = numStack.pop();
                int num2 = numStack.pop();
                res = num1 + num2;
                numStack.add(res);
            }else if (token.equals("-")){
                int num1 = numStack.pop();
                int num2 = numStack.pop();
                res = num2 - num1;
                numStack.add(res);
            }else if (token.equals("*")){
                int num1 = numStack.pop();
                int num2 = numStack.pop();
                res = num1 * num2;
                numStack.add(res);
            }else if (token.equals("/")){
                int num1 = numStack.pop();
                int num2 = numStack.pop();
                res = num2 / num1;
                numStack.add(res);
            }else {
                numStack.add(Integer.parseInt(token));
            }
        }
        return numStack.pop();
    }
}

标签:numStack,num2,leetcode150,int,res,pop,求值,表达式,num1
From: https://www.cnblogs.com/mx-info/p/16622014.html

相关文章

  • 正则表达式
    转自:学无止境(http://www.cnblogs.com/xiashengwang/p/3988009.html)下面的内容来自于微软的官网。“正则表达式”描述在搜索文本正文时要匹配的一个或多个字符串。该......
  • Rust-语句和表达式
    语句和表达式Rust的函数体是由一系列语句组成,最后由一个表达式来返回值,例如:fnadd_with_extra(x:i32,y:i32)->i32{letx=x+1;//语句lety=y+......
  • API基础正则表达式8月23日
    API基础第二天:回顾:String:Strings=newString("hello");String常用方法:length():获取长度trim():去掉两边空白toUpperCase()和toLowerCase():转大写/转小写st......
  • 常用正则表达式
    常用正则表达式一、校验数字的表达式数字:^[0-9]*$n位的数字:^\d{n}$至少n位的数字:^\d{n,}$m-n位的数字:^\d{m,n}$零和非零开头的数字:^(0|[1-9][0-9]*)$非零开头的最多......
  • Switch表达式
    1.旧的用法staticvoidMain(string[]args){Console.WriteLine(OldMethod("Add"));Console.ReadLine();}......
  • 正则表达式
    正则表达式语法普通字符对大小写字母、数字、标点符号的匹配。表达式说明[abc]匹配[]中的所有字符[^abc]匹配除了[]中的所有字符[a-c]匹配区间内的......
  • python中的匿名函数-lambda表达式
    匿名函数"""匿名函数-没有名字的函数-用lambda表达式创建匿名函数"""使用场景"""使用场景-需要一个函数,但又不想费神去命名这个函数-通常在这个函数只......
  • 正则表达式 $1 $2代表什么?
    $1,$2是表示的匹配的小括号里的内容$1是匹配的第一个小括号里的,$2是匹配的第2个小括号里的//将yyyy-mm-dd格式转换为年月日格式functionchDate1date(str){va......
  • 正则表达式
    正则表达式bashbash是一个命令处理,运行在文本窗口中,并能执行用户直接输入命令bash还能从文件中读取linux命令.称之为脚本bash只能通配符、管道、命令替换、条件判断等......
  • 常用正则表达式
    在做项目的过程中,使用正则表达式来匹配一段文本中的特定种类字符,是比较常用的一种方式,下面是对常用的正则匹配做了一个归纳整理。匹配中文:[\u4e00-\u9fa5]英文字母:[a-z......