题目解析
本题可以使用栈来解题。
首先,定义一个栈 stack。
然后,遍历输入串 s 的每一个字符 c:
- 若 c 不是 '('、')'、' ' 这三个字符,那么 c 一定是用于组成 op 或 p1 或 p2 的字符,我们可以定义一个字符串 sb,用于收集这类字符,即 sb += c
当 c == ' ' || c == ')' 时,则此时 sb 已经完成了某个 op 或 p1 或 p2 的收集,我们将此时 sb 压入 stack 中,并且清空 sb 容器。
- 若 c 是 ')' 则说明某个括号已经闭合,此时栈 stack 顶部三个元素,就是该闭合括号内的 op,p1,p2,我们计算出其结果后,将结果重新压入栈 stack 中
计算过程中,可能会发生除0异常,并且除法时,需要注意结果向下取整。
每遍历到 c == ')',stack就会弹栈3个元素,并计算