leetcode[65]Valid Number

Validate if a given string is numeric.

Some examples:
"0" => true
" 0.1 " => true
"abc" => false
"1 a" => false
"2e10" => true

Note: It is intended for the problem statement to be ambiguous. You should gather all requirements up front before implementing one.

click to show spoilers.

Update (2014-12-06):
New test cases had been added. Thanks unfounder's contribution.

class Solution {
public:
bool isNumber(const char *s) 
{
    if(s==NULL)return  false;
    while(*s==' ')s++;
    if(*s=='+'||*s=='-') s++;
    bool  dotAppear=false;
    bool  spaceAppear=false;    
    bool  eAppear=false;
    bool  firstAppear=false;
    bool  secondAppear=false;

    while(*s!='')
    {
        if (*s==' ')
        {
            spaceAppear=true;
        }
        else if(spaceAppear)
        {
            return false;
        }
        else if (*s=='.')
        {
            if (dotAppear||eAppear||spaceAppear)
            {
                return false;
            } 
            else
            {
                dotAppear=true;
            }
        }
        else if (*s=='e'||*s=='E')
        {
            if (eAppear||!firstAppear||spaceAppear)
            {
                return false;
            } 
            else
            {
                eAppear=true;
            }
        } 
        else if(*s=='+'||*s=='-')
        {
            if (!(*(s-1)=='e'||*(s-1)=='E')||spaceAppear)
            {
                return false;
            } 
        }
        else if (*s>='0'&&*s<='9')
        {
            if (spaceAppear)
            {
                return false;
            } 
            else if (!eAppear)
            {
                firstAppear=true;
            } 
            else
            {
                secondAppear=true;
            }
        } 
        else
        {
            return false;
        }
        s++;
    }
    if (!firstAppear)
    {
        return false;
    } 
    else if (eAppear&&!secondAppear)
    {
        return false;
    } 
    else
    {
        return true;
    }
}
};
原文地址:https://www.cnblogs.com/Vae1990Silence/p/4281499.html