227. Basic Calculator II
"3+2*2" = 7
" 3/2 " = 1
" 3+5 / 2 " = 5
题目要求是,给一个字符串,里面包含加减乘除运算符、正整数和空格,要你算出它的结果。
这道题就是先把乘除的结果算出来,把加减操作和数字先存起来,最后再一起运算(当然边解析字符串边运算也是能实现的)。基本上是考字符串解析。我写了一个 Python 版本和一个 C 版本。
- Python 版本用了
re.finditer
把各符号分隔开来(pattern 用的是(\d+|[+\-*/])
),很容易就过了,字符串解析的工作都给 Python 做了,但是性能很差。 - C 的版本只用了 4ms,但是逻辑比较复杂,提交了几次才过
看到论坛里面,有 C++ 版本用了 iostream
, string.find_first_not_of
等,解析起来相对简单。