### 题目
验证给定的字符串是否可以解释为十进制数字。
例如:
"0" => true
" 0.1 " => true
"abc" => false
"1 a" => false
"2e10" => true
" -90e3 " => true
" 1e" => false
"e3" => false
" 6e-1" => true
" 99e2.5 " => false
"53.5e93" => true
" --6 " => false
"-+3" => false
"95a54e53" => false### 思路
上面的例子覆盖不完全,总结起来应该是这样的,字符串中只有一个e或者没有e,并且e前后字符串判断规则不一样,前面字符串中可以存在小数点,但是只能有一个,正负号必须在第一位,并且必须有数字,后面不能存在小数点,也必须有数字,正负号必须在第一位。
又是0ms,不错不错。
### code
class
###思路
有限状态机。网上看的大佬的思路然后写的。
通过题意知道输入字符一共有六种:
- 非法输入
- 空格
- 正负号
- 小数点
- 数字
- e/E
一共九种状态,其中1、4、7、8合法。
- 空格(只有空格或者空白,以下八种前面可以有任意数量空格)
- 数(不含小数点的数,可以含正负号)
- 点(可以含正负号)
- 正/负号(只有正负号)
- 点+数(在1基础上含小数点的数)
- ...+e/E(前面合法+e/E)
- ...+e/E+正/负号(前面合法+e/E+正负号)
- ...+e/E+数(此处的数同1,不能有小数点)
- 合法+空格(末尾可以有任意数量空格)
设置矩阵transTable代表每种状态下输入某个字符会转换到哪种状态,其中-1代表非法状态,1,4,7,8合法,其它暂时不确定。
###code
class