Leet Code: Valid Number


[QUESTION]

Validate if a given string is numeric.

Some examples:

"0" => true
" 0.1 " => true
"abc" => false
"1 a" => false
"2e10" => true

Note: It is intended for the problem statement to be ambiguous. You should gather all requirements up front before implementing one.

[THOUGHT]

输入数据可划分为六类:

有两种比较好的解法:

合法的数字输入组合(方括号[ ]表示可有可无,无方括号表示必须具备):

根据合法数字的情况可以画出状态转移图:

数字识别有限状态机转移图

[CODE]

使用-1表示非法状态,所有输入为INVALID都直接跳转到非法状态,状态转移表中表示状态转换。


Haiyang Xu 06 May 2014