Valid Number
Validate if a given string can be interpreted as a decimal number.
(字符串是否为有效数字)
Note: It is intended for the problem statement to be ambiguous. You should gather all requirements up front before implementing one. However, here is a list of characters that can be in a valid decimal number:
- Numbers 0-9
- Exponent - “e”
- Positive/negative sign - “+”/“-“
- Decimal point - “.”
Of course, the context of these characters also matters in the input.
Example:
1. 有限状态机(Deterministic Finite Automaton, DFA)
所谓“确定有穷状态”,必然需要我们自己动手构造出所有状态来,如下所示:
0 初始无输入或者只有space的状态
1 输入了数字之后的状态
2 前面无数字,只输入了dot的状态
3 输入了+/-状态
4 前面有数字和有dot的状态
5 ‘e’ or ‘E’输入后的状态
6 输入e之后输入+/-的状态
7 输入e后输入数字的状态
8 前面有有效数输入之后,输入space的状态
1 | class Solution: |
2. 正则表达式
考察正则表达式的书写:
- 前后的空格 “(\s*)”
- 整个数字的符号 “[+-]?”
- 纯小数或者带小数 ((\.[0-9]+)|([0-9]+(\.[0-9]*)?)),这部分可以单独出现,也可以是科学计数法的前部分。
- 科学计数法,(e[+-]?[0-9]+)?
(*表示匹配0至多次,+表示匹配1至多次,?表示匹配0至1次。)
1 | import re |
3. 搞笑版
直接调用 python 的类型转换函数float()
,出现异常则不是有效的数字。
1 | class Solution: |