func calculate(s string) int {
queue := []int{1}
sign, ans := 1, 0
n := len(s)
for i := 0; i < n; {
switch s[i] {
case ' ':
i++
case '+':
sign = queue[len(queue)-1]
i++
case '-':
sign = -queue[len(queue)-1]
i++
case '(':
queue = append(queue, sign)
i++
case ')':
queue = queue[:len(queue)-1]
i++
default:
num := 0
for ; i < n && '0' <= s[i] && s[i] <= '9'; i++ {
num = num*10 + int(s[i]-'0')
}
ans += sign * num
}
}
return ans
}