[leetcode] Valid Number

来源:互联网 发布:js实现求阶乘n 函数 编辑:程序博客网 时间:2024/05/08 21:24

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.

class Solution {public:    bool isNumber(const char *s) {        // Start typing your C/C++ solution below        // DO NOT write int main() function        int i=0;        bool dotappeared=false;        bool numberappeared=false;        bool eappeared=false;        for( ; s[i]==' ' ; i++);        if(s[i]=='+' || s[i]=='-')            i++;        if(s[i]=='\0')            return false;        for( ; s[i] ; i++){    switch(s[i]){case ' ':for( ; s[i] && s[i]==' ' ; i++);                if(s[i]!='\0')                    return false;                i--;break;case '.':if(dotappeared)return false;                if(eappeared)                    return false;dotappeared=true;break;case 'e':case 'E':if(!numberappeared || eappeared)return false;eappeared=true;dotappeared=false;numberappeared=false;                if(s[i+1]=='-' || s[i+1]=='+')                    i++;break;case '0':case '1':case '2':case '3':case '4':case '5':case '6':case '7':case '8':case '9':numberappeared=true;break;default:return false;}}        if(!numberappeared)            return false;        return true;    }};


原创粉丝点击