【leetcode】剑指 Offer 20. 表示数值的字符串

bool isNumber(char* s){
    int i, j, pcnt = 0, ecnt = 0, dcnt = 0, scnt=0, len = strlen(s);
    for (i = 0; i<len; i++){
        if (s[i] == '+' || s[i] == '-'){
            if (i != 0 && s[i - 1] != 'e' && s[i - 1] != 'E' && s[i - 1] != ' ')
                return false;
            else if(i == len - 1 || (isdigit(s[i + 1]) == 0 && s[i + 1] != '.'))
                return false;
        }        
        else if ( s[i] == '.' ){
            pcnt++;
            if ( pcnt>1 || ecnt > 0)
                return false;
            else if (i != 0 && s[i - 1] == ' ' && dcnt > 0)
                return false;
            else if (i == 0 && isdigit(s[i + 1]) == 0)
                return false;
        }
        else if (s[i]=='e' || s[i]=='E'){
            ecnt++;
            if (i == 0 || ecnt > 1 || i == len - 1)
                return false;
            else if    (isdigit(s[i + 1]) == 0 && s[i + 1] != '-' && s[i + 1] != '+') 
                return false;
            else if (isdigit(s[i - 1]) == 0 && s[i - 1] !='.')
                return false;
        }
        else if (isdigit(s[i])){
            dcnt++;
            if (i != 0 && s[i - 1] == ' ' && (dcnt > 1 || pcnt>0) )
                return false;
        }
        else if (s[i] == ' '){
            scnt++;
        }
        else
            return false;    
    }
    return (dcnt) ? true : false;
}
原文地址:https://www.cnblogs.com/ganxiang/p/14084171.html