class Solution {
public:
bool isNumber(string s) {
vector<map<char,int>> arrmv= {
{{'s',1},{'d',2},{' ',0},{'.',3}}, {{'d',2},{'.',3}}, {{'d',2},{'.',4},{'e',5},{' ',7}},{{'d',4}},{{'d',4},{'e',5},{' ',7}}, {{'d',6},{'s',8}},{{'d',6},{' ',7}},{{' ',7}}, {{'d',6}}
};
int stat=0;
for(auto it:s){
int nowstat;
if(it>='0'&&it<='9')nowstat='d';
else if(it == 'e')nowstat='e';
else if(it == '.')nowstat='.';
else if(it == '+')nowstat='s';
else if(it == '-')nowstat='s';
else if(it == ' ')nowstat=' ';
else return false;
if(!arrmv[stat].count(nowstat))return false;
else stat=arrmv[stat][nowstat];
}
if(stat == 2 || stat == 4 || stat == 6 || stat == 7)return true;
return false;
}
};