class Solution {
public:
bool isNumber(const char *s)
{
int i,start=1,a[2]={0,0},loc[2]={0,0},k1=0,k2=0;
vector<int>n;
if(s=="")
return false;
for(i=0;i<strlen(s);i++)
{
if(s[i]!=' ')
{
start=i+1;
break;
}
}</int>
if(s[start-1]=='+'||s[start-1]=='-') { start++; n.push_back(0); } for(i=start-1;i<strlen(s);i++) { if(s[i]<'0'||s[i]>'9') { if(s[i]=='.') { if(i!=strlen(s)-1&&(s[i+1]>'9'||s[i+1]<'0')&&s[i+1]!=' ') if(s[i+1]!='e'&&s[i+1]!='E') return false; else if(k2==0) return false; a[0]++; loc[0]=i+1; n.push_back(0); } else if(s[i]=='e'||s[i]=='E') { if(i==strlen(s)-1) return false; else if(s[i+1]>'9'||s[i+1]<'0') if(s[i+1]!='+'&&s[i+1]!='-') return false; else if(i+1==strlen(s)) return false; else if(s[i+2]>'9'||s[i+2]<'0') return false; a[1]++; loc[1]=i+1; n.push_back(0); } else if(s[i]=='+'||s[i]=='-') if(s[i-1]!='e'&&s[i-1]!='E') return false; else ; else if(s[i]==' ') n.push_back(1); else return false; } else { n.push_back(0); k2=1; } } if(k2==0) return false; if(a[0]>1||a[1]>1) return false; if(loc[0]>loc[1]&&loc[1]!=0) return false; if(start==loc[1]) return false; for(i=0;i<n.size();i++) { if(n[i]==0) if(k1==0||k1==1) k1=1; else return false; else if(k1==1) k1=2; } if(k1==0) return false; return true; }
};