LeetCode每日一题,227. Basic Calculator II
先看题目描述
大意就是给定一个字符串 s 代表一个表达式,求出表达式的值
算法和思路
栈
由于乘除运算优于加减运算,因此可以考虑先进行所有的乘除运算,并将乘除运算后的结果放回原表达式的相应位置,最后整个表达式进行加减运算,便可得到结果
基于此,我们可以用一个栈,保存这些整数值,当遇到加减号后的数字时,将其直接压入栈中;遇到乘除号后的数字时,将其与栈顶元素进行计算,并用结果替换原栈顶元素
具体到实现上,遍历字符串 s:
- 遇到空格时,跳过
- 遇到数字时,将数字直接压入栈中
- 遇到加号时,将其后整数压入栈中
- 遇到减号时,将其后整数的相反数压入栈中
- 遇到乘号或除号时,将栈顶元素出栈,与符号后的整数进行相应运算,并将运算结果压入栈中
最后将栈中所有元素出栈,进行加法运算即可
算法源码
栈
1 | class Solution { |