leetcode题型总结(leetcode224go基本计算器)
实现一个基本的计算器来计算一个简单的字符串表达式 s 的值。
示例 1:输入:s = "1 1" 输出:2
示例 2:输入:s = " 2-1 2 " 输出:3
示例 3:输入:s = "(1 (4 5 2)-3) (6 8)" 输出:23
提示:1 <= s.length <= 3 * 105
s 由数字、' '、'-'、'('、')'、和 ' ' 组成
s 表示一个有效的表达式
解题思路分析1、栈;时间复杂度O(n),空间复杂度O(n)
func calculate(s string) int {
stack := make([]int, 0)
num := 0
res := 0
sign := 1
for i := 0; i < len(s); i {
if '0' <= s[i] && s[i] <= '9' {
num = 0
for ; i < len(s) && '0' <= s[i] && s[i] <= '9'; i {
num = num*10 int(s[i]-'0')
}
res = res sign*num
i--
} else if s[i] == ' ' {
sign = 1
} else if s[i] == '-' {
sign = -1
} else if s[i] == '(' {
stack = append(stack, res, sign)
res = 0
sign = 1
} else if s[i] == ')' {
sign = stack[len(stack)-1]
prev := stack[len(stack)-2]
stack = stack[:len(stack)-2]
res = prev sign*res*sign
}
}
return res
}
Hard题目,计算器系列题目,类似的题目还有 leetcode 227.基本计算器II
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com