leetcode中如何为运算表达式设计优先级
发表于:2024-11-20 作者:千家信息网编辑
千家信息网最后更新 2024年11月20日,这篇文章主要为大家展示了"leetcode中如何为运算表达式设计优先级",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"leetcode中如何为运算表达式设计
千家信息网最后更新 2024年11月20日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 []int
if len(t)==1{
r=append(r,t[0].value)
return r
}
for i:=1;i
la:=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 op
value int
op byte
}
func strToTok(input string)[]Token{
var r []Token
for i:=0;i
if input[i]=='+' || input[i]=='-' || input[i]=='*' {
r=append(r,Token{
tokenType:1,
op:input[i],
})
i++
}
num:=0
for i
='0' && input[i]<='9'{ num=num*10+int(input[i]-'0')
i++
}
r=append(r,Token{
value:num,
})
}
return r
}
以上是"leetcode中如何为运算表达式设计优先级"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
运算
优先级
表达式
设计
内容
篇文章
输入
字符
字符串
示例
结果
运算符
部分
学习
帮助
解释
输出
不同
有效
位置
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库修改数据语句的关键字是
软件开发cs和bs区别
广告数据库结构图
历史数据库his
怒火一刀通用服务器下载
姑苏区高品质服务器咨询客服
廊坊网络技术培训
征信网络安全
赣州软件开发地区
中清互联网北京科技有限公司
数据库事务尚未提交
为什么电话连接不到服务器
网络安全心得合集
合肥明天集团软件开发
学校网络安全管理应急预案
服务器增加2块硬盘
服务器磁盘阵列卡电池包鼓
mc怎么建立服务器
戴尔720服务器登录密码
黔东南州建行金融网络安全
sa附加数据库提示挂起
确保网络安全措施英语
图存储数据库的技术路线图
网络安全大赛要什么学历
重庆学网络安全哪个职业学校好
租用美国云服务器
多个数据库组成二维表
腾讯云的服务器在哪打开
陵英语单词软件开发
杭州熊猫软件开发有限公司