Validate if a given string is numeric.It is intended for the problem statement to be ambiguous. You should gather all requirements up front before implementing one.
解题分析
好久好久没有用DFA了,才发现很多学过的东西真的很有用。这道题就可以用DFA来解决。先上图,然后对图进行一下分析。
q1是初始状态;
q2是个过渡状态,代表符号;
q3是个终止状态,表示不包含的小数点‘.’,只包含符号和纯数字的数;
q4是个过渡状态,代表包含符号和小数点的状态;
q5是个终止状态,代表不包含科学计数法的数;
q6是个过渡状态,代表接受e的状态;
q7是个过渡状态,代表接受e后,科学计数法包含符号的状态;
q8是个终止状态,代表包含所有合法符号的状态。
Accept代码
class Solution {
public:
bool isNumber(string s) {
int state=1;
for(auto c:s){
switch (state){
case 1:
if(c==' ') state=1;