LeetCode Algorithm 227. Basic Calculator II

 5th July 2017 at 10:07am

227. Basic Calculator II

题目链接 | 我的解答

"3+2*2" = 7
" 3/2 " = 1
" 3+5 / 2 " = 5

题目要求是,给一个字符串,里面包含加减乘除运算符、正整数和空格,要你算出它的结果。

这道题就是先把乘除的结果算出来,把加减操作和数字先存起来,最后再一起运算(当然边解析字符串边运算也是能实现的)。基本上是考字符串解析。我写了一个 Python 版本和一个 C 版本。

  1. Python 版本用了 re.finditer 把各符号分隔开来(pattern 用的是 (\d+|[+\-*/])),很容易就过了,字符串解析的工作都给 Python 做了,但是性能很差。
  2. C 的版本只用了 4ms,但是逻辑比较复杂,提交了几次才过

看到论坛里面,有 C++ 版本用了 iostream, string.find_first_not_of 等,解析起来相对简单。