leetcode8: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.

{key points:  1.think every possible condition.

2. it's a trick that putting space check in front of if..else.. chain.  

}


class Solution {
public:
    bool isNumber(const char *s) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
        bool num = false;
        bool deci = false;
        bool exp = false;
        bool space = false;
        
        while( *s!='\0' && *s==' ') {
            s++;
        }
        
        if( *s=='+' || *s=='-') {
            s++;
        }
        
        while(*s!='\0') {
            if(*s == ' ') {
                space = true;
            } else if(space == true) {
                return false;
            } else if(*s>='0' && *s<='9') {
                num = true;
            } else if( *s == '.') {
                if( deci ==true || exp == true) {
                    return false;
                } else {
                    deci = true;
                    #num = false;
                }
            } else if(*s == 'e') {
                if(exp==true || num==false) {
                    return false;
                } else {
                    if( *(s+1) == '+' || *(s+1) == '-') {
                        ++s;
                    }
                    exp = true;
                    num = false;
                }
            } else {
                return false;
            }
            
            ++s;
        }
        
        return num;
        
    }
};


posted @ 2012-12-21 17:55  西施豆腐渣  阅读(112)  评论(0编辑  收藏  举报