65. 有效數(shù)字
跟這個(gè)是一個(gè)題劍指 Offer 20. 表示數(shù)值的字符串
《編譯原理》里的dfa,不會(huì)的話建議學(xué)一下編譯原理。。
面向用例編程。。根據(jù)錯(cuò)的用例改了好多次dfa...最后是這樣:

class Solution {
public:
bool isNumber(string s) {
stringstream ssin(s);
int cnt=0;
while(ssin>>s) cnt++;
if(cnt!=1)return false;
int n=s.size();
int st=0;
for(auto c:s){
switch(st){
case 0:
if(c=='-' || c=='+')st=6;
else if(isdigit(c))st=1;
else if(c=='.')st=5;
else return false;
break;
case 1:
if(isdigit(c))st=1;
else if(c=='.')st=2;
else if(c=='e')st=3;
else return false;
break;
case 2:
if(isdigit(c))st=2;
else if(c=='e')st=3;
else return false;
break;
case 3:
if(isdigit(c))st=4;
else if(c=='-' || c=='+')st=7;
else return false;
break;
case 4:
if(isdigit(c))st=4;
else return false;
break;
case 5:
if(isdigit(c))st=2;
else return false;
break;
case 6:
if(isdigit(c))st=1;
else if(c=='.')st=5;
else return false;
break;
case 7:
if(isdigit(c))st=4;
else return false;
break;
}
}
return st==1 || st==2 || st==4;
}
};