题目描述
提取字符串中的最长合法简单数学表达式,字符串长度最长的,并计算表达式的值。如果没有,则返回 0 。
简单数学表达式只能包含以下内容:
0-9数字,符号±*
说明:
所有数字,计算结果都不超过long
如果有多个长度一样的,请返回第一个表达式的结果
数学表达式,必须是最长的,合法的
操作符不能连续出现,如 ±-+1 是不合法的
输入描述
字符串
输出描述
表达式值
用例

题目解析
本题的合法表达式不需要考虑 ‘/’ 号,也就不用考虑除0,以及除法是整除还是小数除的问题。
另外,本题的 +、-号仅作为运算符号,不作为正负号。因此 “+1”,“-1” 这种不能理解为合法的表达式。
本题可以分为两步求解:
- 找出输入串中最长合法的表达式
- 计算最长合法表达式的结果
关于1的求解,有两种思路:
双指针
正则匹配
其中正则匹配实现起来比较简单,用于匹配合法表达式的正则也不是很难写,对应正则解析如下:

订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



