《leetcode-go》逆波兰式计算

栈_逆波兰表达式_计算器实现_Golang版本 逆波兰表达式可以讲复杂的计算过程转化为简单的操作过程,进而得出答案。 比如 (a+b)*(b-c) 按照逆波兰表达式的规则得到 :ab+bc-*   将该表达式的字符以及符号,按照从左到右的顺序,依次入栈,一碰到符号则将栈顶前两个元素取出,做运算然后放入栈内,重复该操作,直到表达式结束。 下面将结合栈与逆波兰表达式写一个简易计算器。 运行命令如下 go run counter.go -- 阅读详情

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

在做这个题目之前,我们先了解一下什么是逆波兰式?

我们平常人类常用的计算方式(1+2)*(3+4)-(5*6)是中缀表达式,这种表达式对我们来说很简单,但是对计算机来说却很复杂。

所以转化成计算机喜欢的逆波兰式,上面的例子转化为逆波兰式则为

->"(1+2)*(3+4)","(5*6)","-"

->"(1+2)","(3+4)","*","5","6","*","-"

->"1","2","+","3","4","+","*","5","6","*","-"

这种算式需要采用栈式结构进行计算,先进后出。

package main

import (
	"fmt"
	"strconv"
)

/**
 *
 * @param tokens string字符串一维数组
 * @return int整型
 */
type Stack struct {
	i       int
	numList []int
}

func (stack *Stack) Push(num int) {
	stack.numList = append(stack.numList, num)
	stack.i++
}
func (stack *Stack) Pop() (num int) {
	num = stack.numList[stack.i-1]
	stack.numList = stack.numList[0 : stack.i-1]
	stack.i--
	return
}
func main() {
	var tokens = []string{"2", "1", "+", "3", "*"}
	res := evalRPN(tokens)
	fmt.Println(res)

}
func evalRPN(tokens []string) int {
	// write code here
	stack := new(Stack)
	for _, str := range tokens {
		if str == "+" || str == "-" || str == "*" || str == "/" {
			num1 := stack.Pop()
			num2 := stack.Pop()
			var res int
			switch str {
			case "+":
				res = num2 + num1
				break
			case "-":
				res = num2 - num1
				break
			case "*":
				res = num2 * num1
				break
			case "/":
				res = num2 / num1
				break
			}
			stack.Push(res)
			fmt.Println("ha", stack)
		} else {
			intNum, _ := strconv.Atoi(str)
			stack.Push(intNum)
			fmt.Println("hei", stack)
		}
	}
	return stack.Pop()
}

 

一点击打印电脑就卡死?资源管理器停止工作的解决方法 Windows11共享的HP1022n打印机导致客户端打印时资源管理器崩溃卡死,电脑停止工作。 阅读详情

相关推荐

ADS124S08配置避坑指南:从SPI时序到寄存器设置,手把手教你调通24位ADC

本文详细解析了ADS124S08 24位ADC的SPI时序配置、寄存器设置及外围电路设计中的关键细节,帮助工程师避开常见陷阱。从SPI通信模式选择到DRDY引脚读取优化,再到基准电压启动时间调整,提供了实战验证的解决方案,确保高精度数据采集的稳定性。

weixin_29192365的博客 286

150. 逆波兰表达式求值

根据逆波兰表示法,求表达式的值。 有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。 说明: 1.整数除法只保留整数部分。 2.给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。 示例 1: 示例 2: 示例 3: 逆波兰表达式: 逆波兰表达式是一种后缀表达式,所谓后缀就是指算符写在后面。 1.平常使用的算式则是一种中缀表达式,如 ( 1 + 2 ) * ( 3 + 4 ) 。 2.该算式的逆波兰表达式写法为 ( ( 1

jiangdongxiaobawang的博客 730

Android Studio中把llama.cpp编译Android .so

本文介绍了一个在Android Studio中集成llama.cpp的最小Demo实现方案,通过JNI将llama.cpp编译为Android.so库,实现本地加载GGUF模型进行文本生成。文章详细说明了项目结构配置(SDK≥30,NDK≥28)、CMake编译设置、Kotlin-JNI-C++的完整调用链实现,以及模型文件部署方式。该Demo采用每次请求新建上下文的简化设计,包含加载模型、生成文本、资源释放等核心功能,并提供了错误排查建议。项目舍弃了上下文保持等复杂功能以确保稳定性,适合作为端侧大语言模型

Zhang Phil 518

算法详解——leetcode150(逆波兰表达式)

欢迎来看博主的算法讲解博主ID:代码小豪。

2301_77239666的博客 1565

无人机避障——Mid360+Fast-lio感知建图+Ego-planner运动规划(胎教级教程)

本工作将 Mid360 激光雷达、Fastlio-SLAM 和 Ego-Planner 集成,实现无人机的环境感知、定位建图和运动规划(仿真过程)—— 胎教级教程。

weixin_45390670的博客 1万+

华为OD机试双机位C卷-统计差异值大于相似值二元组个数(C/C++/Py/Java/Js/Go)

华为OD机试(机考)双机位C卷 【统计差异值大于相似值二元组个数】,提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试 - 统计差异值大于相似值二元组个数

qq_45776114的博客 783

golang实现中缀表达式转换成后缀表达式(逆波兰)

NifixToRPN函数只能转换无括号的中缀表达式,遇到括号则调用barket函数,如果括号中嵌套括号则形成了递归。

weixin_42474185的博客 869

Python爬虫实战:Boss直聘职位数据采集实战 - Playwright + 结构化解析完整方案(附CSV导出 + SQLite持久化存储)!

我长期专注 Python 爬虫工程化实战,主理专栏 《Python爬虫实战》:从采集策略到反爬对抗,从数据清洗到分布式调度,持续输出可复用的方法论与可落地案例。内容主打一个“能跑、能用、能扩展”,让数据价值真正做到——抓得到、洗得净、用得上。

喵手的博客 2187

Leetcode第150题—逆波兰表达式

leetcode,栈,算法

Green_756的博客 1204

【AI智能体】Dify 搭建发票识别助手操作实战详解

Dify 搭建发票识别专属助手操作实战详解

congge 5549

【天工Godwork精品教程】天工3.1.7安装教程(附Godwork完整版下载地址)

本文讲解天工3.1.7安装过程(附Godwork完整版网盘下载地址)。 一、天工3.1.7安装教程 1. 安装GodWork-AT 3.1.7 2. 安装GodWork-AT 3.1.7补丁 3. 安装GodWork-EOS-Setup-2017B-1231 4. 安装GodWork-EOS补丁 5. 运行godwokr软件 6. 生成ZC码 7. 输入ZC码 8. eos插

智慧空间实验室 5285

Golang对逆波兰表示法的简单实现

1 package main 2 import ( 3 "bufio" 4 "fmt" 5 "os" 6 "strconv" 7 ) 8 type Stack struct { 9 i int 10 data [10]int 11 } 12 func (s *Stack) Push(a int) { 13...

weixin_30795127的博客 206

Matlab安装硬件支持包、simulink离线安装硬件支持包安装,离线安装ESP32、stm32等安装包,Are you up-to-date on SoftWare Maintenance?

注意:如果提示出现“没有可从此位置安装的兼容支持包后,这个问题,请查看步骤5,是不是没有按照步骤5进行操作.一般情况下出现“没有可从此位置安装的兼容支持包”后,重新安装选择了默认路径就可以成功。如果不是很清楚,直接安装在默认的文件夹下面,即使这个文件夹下没有matlab相关的文件夹,也要这么下载,没有为什么,切记尽量按默认路径安装,更改下载的路径不成功,别怪我没提醒。:下载到哪里非常重要,如果下载的不是默认的路径下,就需要将其中这个的是这个archives文件夹,连同其他文件一并要复制出来,拷贝到。

pvmsmfchcs的博客 1746

面试算法常考题之-------逆波兰式合集

从前中后序的结构其实不难得出一个很明显的结论:前缀式往往会将运算符号放在前面,数字放在后面,而后缀式往往是将数字放在前面,运算符号放在后面。

qq_51898139的博客 617

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

leetcode | go | 第224题 | 基本计算器

基本计算器

iCling的博客 280

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【GoLang】命令行计算器(栈,逆波兰表达式)

输入一个式子(中缀表达式),将其传入并转换为后缀表达式,接着通过计算后缀表达式来获得结果。

2201_75692232的博客 777

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

go逆波兰式计算器

编写一个简单的逆波兰式计算器,它接受用户输入的整型数(最大值 999999)和运算符 +、-、*、/。 输入的格式为:number1 ENTER number2 ENTER operator ENTER --> 显示结果 package main import ( "bufio" "errors" "fmt" "os" "strconv" "strings" )

ysj的博客 499

逆波兰式(后缀式)详解

1、建立连接协议(三次握手) (1)客户端发送一个带SYN标志的TCP报文到服务器。这是三次握手过程中的报文1。 (2) 服务器端回应客户端的,这是三次握手中的第2个报文,这个报文同时带ACK标志和SYN标志。因此它表示对刚才客户端SYN报文的回应;同时又标志SYN给客户端,

tianmo2010的专栏 5916

栈的应用 - 波兰式与逆波兰式

上一篇笔记中,简单讲到了栈的特性,并且给出了栈的实现,现在要利用栈来实现表达式的求值问题。   有三个名词与表达式的计算密切相关,分别是中缀表达式、前缀表达式和后缀表达式,它们都是表达式的一种记法,区别是运算符相对于操作数的位置不同:前缀表达式的操作符位于与其相关的操作数之前;中缀表达式的操作符位于与其相关的操作数之间;后缀表达式的操作符位于与其相关的操作数之后。(简而言之,前、中、后就是指操作符所

u011836061的专栏 7505

中缀表达式 转 后缀表达式(逆波兰表达式) 及计算

中缀表达式转换后缀表达式: 正常表达式(中缀表达式)3+4*5-6 对应的后缀表达式(逆波兰表达式):3 4 + 5 × 6 - 【利用栈的方法 】 中缀表达式看成一个字符串,从左到右开始扫描中缀表达式: 遇到操作数:直接输出(添加到后缀表达式中) 栈为空时,遇到运算符,直接入栈 遇到左括号:将其入栈 遇到右括号:执行出栈操作,并将出栈的元素输出,直到弹出栈的是左括号,括号不...

推土机 2101

LeetCode-150-逆波兰表达式

根据 逆波兰表示法,求表达式的值。 有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。 说明: 整数除法只保留整数部分。 给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。 示例 1: 输入: [“2”, “1”, “+”, “3”, “*”] 输出: 9 解释: 该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9 示例 2: 输入:

qq_43269370的博客 186

LeetCode 每日一题 逆波兰式(后缀表达式)

这题真的历经波澜,题目本身不难,主要在于各种各样的格式错误和修改,比如字符串转换为Int,比如栈的取出栈顶元素,删除栈顶,入栈等操作 class Solution { public: int evalRPN(vector<string> &tokens) { //这个是关于栈的后缀表达式 //首先需要创建一个栈,大致思路就是...

wzw的博客 388

leetcode_2:Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid ope

题目; 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",...

王文强的博客 483

leetcode——计算逆波兰式(后缀表达式)的值

题干:运算符仅包含"+","-","*“和”/",被操作数可能是整数或其他表达式 例如: ["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9 ["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6 解: class Solution: def evalRPN(self , tokens ): # write code here stack = []

xy_的博客 294

将表达式转换为逆波兰表达式-LintCode

给定一个表达式字符串数组,返回该表达式的逆波兰表达式(即去掉括号)。示例: 对于 [3 - 4 + 5]的表达式(该表达式可表示为[“3”, “-“, “4”, “+”, “5”]),返回 [3 4 - 5 +](该表达式可表示为 [“3”, “4”, “-“, “5”, “+”])。思想: 对于数字时,加入后缀表达式; 对于运算符: a. 若为 ‘(‘,入栈; b. 若为 ‘)’,则依次

kane的博客 3800

Leetcode 计算逆波兰式(后缀表达式)的值

题目描述 计算逆波兰式(后缀表达式)的值 运算符仅包含"+","-","*"和"/",被操作数可能是整数或其他表达式 例如: ["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9↵ ["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6 Evaluate the valu...

不一样的烟火 711
上一篇: 《leetCode-go》二叉树的最小深度
下一篇: 《leetcode-go》一条直线上的最多点数
less_cold
博客等级 码龄10年 40粉丝 364原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值