Skip to content

Latest commit

 

History

History
 
 

772.Basic-Calculator-III

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

772.Basic-Calculator-III

对于括号的处理必然要用到stack。本题的处理思想是,遇到左括号就将字符串入栈并清空curStr,直到遇到了右括号,才开始调用子函数eval(curStr)解析当前的curStr的数值结果.于是子任务eval(s)就是解析一个不包含括号的运算字符串,类似于227.Basic Calculator II。解析完的结果再转化为字符串,与栈顶的字符串拼接起来,继续往下处理。

这里与227.Basic Calculator II不同的一个细节是,我们在eval(s)里面可以处理这样的字符串:++2-+3*-3-+1/-3,也就是说,在每个二元运算符加减乘除之外,每个操作数之前可能还有一个符号位。这是为什么呢?举个例子:3+(1-4),括号内得到的其实是-3,于是到了外层需要解析3+-3。再举个例子:3*(2-4),括号内得到的其实是-2,于是到了外层需要解析3*-2。这些都是我们需要在eval里考虑到的情况。

Leetcode Link