golang中怎么利用leetcode实现逆波兰式
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,今天就跟大家聊聊有关golang中怎么利用leetcode实现逆波兰式,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。根据逆波兰表示法,求表达式
千家信息网最后更新 2025年01月23日golang中怎么利用leetcode实现逆波兰式
今天就跟大家聊聊有关golang中怎么利用leetcode实现逆波兰式,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
根据逆波兰表示法,求表达式的值。
有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。
说明:
整数除法只保留整数部分。
给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。
示例 1:
输入: ["2", "1", "+", "3", "*"]输出: 9解释: ((2 + 1) * 3) = 9
示例 2:
输入: ["4", "13", "5", "/", "+"]输出: 6解释: (4 + (13 / 5)) = 6
示例 3:
输入: ["10", "6", "9", "3", "+", "-11", "*", "/", "*", "17", "+", "5", "+"]输出: 22解释: ((10 * (6 / ((9 + 3) * -11))) + 17) + 5= ((10 * (6 / (12 * -11))) + 17) + 5= ((10 * (6 / -132)) + 17) + 5= ((10 * 0) + 17) + 5= (0 + 17) + 5= 17 + 5= 22
解题思路:
本题很简单,理解逆波兰式就ok
逆波兰式求解原理:
1,从左往右扫描token
2,如果式操作数,入栈
3,如果是操作符,弹出两个操作数
4,计算结果,将结果入栈
5,扫描完token,栈中,剩下结果,结果出栈
import "strconv"
func evalRPN(tokens []string) int {
var s stack
for i := 0; i < len(tokens); i++ {
if !isOperator(tokens[i]) {
s.Push(tokens[i])
} else {
op2 := s.Pop()
op1 := s.Pop()
res := eval(op1, op2, tokens[i])
s.Push(fmt.Sprint(res))
}
}
r := s.Pop()
rv, _ := strconv.ParseInt(r, 10, 64)
return int(rv)
}
func eval(op1 string, op2 string, token string) int64 {
o1, _ := strconv.ParseInt(op1, 10, 64)
o2, _ := strconv.ParseInt(op2, 10, 64)
switch token {
case "+":
return o1 + o2
case "-":
return o1 - o2
case "*":
return o1 * o2
case "/":
return o1 / o2
}
return 0
}
func isOperator(token string) bool {
return token == "+" || token == "-" || token == "*" || token == "/"
}
type stack struct {
data []string
}
func (s *stack) Push(str string) {
s.data = append(s.data, str)
}
func (s *stack) Pop() string {
if len(s.data) < 1 {
return ""
}
str := s.data[len(s.data)-1]
s.data = s.data[:len(s.data)-1]
return str
}
看完上述内容,你们对golang中怎么利用leetcode实现逆波兰式有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
波兰
结果
表达式
有效
内容
整数
示例
解释
输入
输出
操作数
运算
两个
原理
对象
思路
总会
情况
换句话说
操作符
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库程序员入门书籍
软件开发大三的课程
网络技术学习软件自律
安装电子发票税控服务器组件接口
上海直销软件开发
软件开发的几种基本方法
2018年网络技术发
软件开发需要具备什么知识
陕西dns服务器地址
东数西算服务器为什么是浪潮软件
铜陵进销存软件开发多少钱
显示数据库时间格式
广电网络技术维护专业
软件开发报价对比
linux建立数据库
网络技术考研学校排名
沈阳政务软件开发技术
江苏大数据软件开发哪家可靠
软件开发的需求清单
世界银行数据库栏目
网页哪些部分需要连接数据库
网络安全法第41集
一年级小学生网络安全手抄报图片
数字媒体与网络技术学什么
网络安全在军事上的应用
螺旋模型适用什么软件开发
淄博mes管理软件开发公司
更改游戏服务器列表连接区IP
数据库er逻辑设计
软件开发方向职业分析