leetcode中如何为运算表达式设计优先级
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,这篇文章主要为大家展示了"leetcode中如何为运算表达式设计优先级",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"leetcode中如何为运算表达式设计
千家信息网最后更新 2025年12月03日leetcode中如何为运算表达式设计优先级
这篇文章主要为大家展示了"leetcode中如何为运算表达式设计优先级",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"leetcode中如何为运算表达式设计优先级"这篇文章吧。
给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含 +, - 以及 * 。
示例 1:输入: "2-1-1"输出: [0, 2]解释:((2-1)-1) = 0(2-(1-1)) = 2示例 2:输入: "2*3-4*5"输出: [-34, -14, -10, -10, 10]解释:(2*(3-(4*5))) = -34((2*3)-(4*5)) = -14((2*(3-4))*5) = -10(2*((3-4)*5)) = -10(((2*3)-4)*5) = 10
解题思路:
1,将输入字符串拆分成token
2,在任意运算符所在位置将数组拆分成两部分
3,递归对两部分求值
4,对值进行运算
func diffWaysToCompute(input string) []int {t:=strToTok(input)fmt.Println(t)return cal(t)}func cal(t[]Token)[]int{var r []intif len(t)==1{r=append(r,t[0].value)return r}for i:=1;ila:=cal(t[:i])ra:=cal(t[i+1:])for _,l:=range la{for _,r1:=range ra{switch t[i].op{case '+':r=append(r,l+r1)case '-':r=append(r,l-r1)case '*':r=append(r,l*r1)}}}}return r}type Token struct{tokenType int //0 num 1 opvalue intop byte}func strToTok(input string)[]Token{var r []Tokenfor i:=0;iif input[i]=='+' || input[i]=='-' || input[i]=='*' {r=append(r,Token{tokenType:1,op:input[i],})i++}num:=0for i='0' && input[i]<='9'{ num=num*10+int(input[i]-'0')i++}r=append(r,Token{value:num,})}return r}
以上是"leetcode中如何为运算表达式设计优先级"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
运算
优先级
表达式
设计
内容
篇文章
输入
字符
字符串
示例
结果
运算符
部分
学习
帮助
解释
输出
不同
有效
位置
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
新乡奥瑞网络技术有限公司
数字化智慧社区软件开发
树莓派3安装数据库
cfda传感网络技术
长春游族网络技术有限公司
浙江机械软件开发批发价
国家鼓励和开发网络安全保护
广东推荐的软件开发售后保障
西湖论剑网络安全技能大赛视频
极路由改无线打印服务器
i国网络安全
饿了么数据库设计图
遥感样点数据库
服务器新增jar包
智能建筑网络安全问题
accdb数据库
网络安全的法规详解
戴尔笔记本软件开发
中国有没有自己的电脑服务器
合肥电信软件开发岗待遇
深圳冰川网络技术有限公
万网虚拟主机建数据库
mesh网络技术的缺点
剑灵合服务器列表
电商app数据库
oracle数据库连接如何外放
网络安全法什么时候起施行的
四川语音网络技术分类技术
国外数据库安全问题
深入僧尼开展网络安全宣传活动