Valid Number

来源:互联网 发布:淘宝帐号密码找回 编辑:程序博客网 时间:2024/05/16 07:35

分三种情况去讨论,第一种没有点和e,第二种有。第三中有e

class Solution {public:    bool isNumber(const char *s) {        int curState  = 1;        bool isNum = false;        while(1)        {            if(curState == 1)            {                while(*s==' ')                    s++;                if(*s=='+'||*s=='-')                    s++;                while(*s>='0'&&*s<='9')                {                    s++;                    isNum = true;                }                if(*s=='.')                {                    s++;                    curState = 2;                    continue;                }                if((*s=='e'||*s=='E')&&isNum)                {                    s++;                    curState = 3;                    continue;                }                while(*s==' ')                    s++;                return (*s=='\0'&&isNum);            }            else if(curState == 2)            {                while(*s>='0'&&*s<='9')                {                    isNum = true;                    s++;                }                if((*s == 'e'||*s=='E')&&isNum)                {                    s++;                    curState = 3;                    continue;                }                while(*s==' ')                    s++;                                    return (*s=='\0'&&isNum);            }            else            {                isNum = false;//这里保证e后面一定有数                if(*s=='+'||*s=='-')                    s++;                while(*s>='0'&&*s<='9')                {                    isNum = true;                    s++;                }                while(*s==' ')                    s++;                                    return (*s=='\0'&&isNum);                            }        }    }};


0 0
原创粉丝点击