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;   
}

};