Bootstrap

Practice43:实现一个函数用来判断字符串是否表示数值(包括整数和小数)

Practice43:

请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。

S1

用排除法

class Solution {
public:
    bool isNumeric(char* string)
    {
        int n = strlen(string);
        bool point = false;
        bool exp = false;
        for(int i=0;i<n;++i){
            if(string[i]=='+'||string[i]=='-'){
                if(i+1==n||!(string[i+1]>='0'&&string[i+1]<='9'||string[i+1]=='.')){
                    return false;
                }
                if(!(i==0||string[i-1]=='e'||string[i-1]=='E')){
                    return false;
                }
            }
            else if(string[i]=='.'){
                if(point||exp||!(i+1<n&&string[i+1]>='0'&&string[i+1]<='9')){
                    return false;
                }
                point = true;
            }
            else if(string[i]=='e'||string[i]=='E'){
                if(exp||i+1==n||!(string[i+1]>='0'&&string[i+1]<='9'||string[i+1]=='+'||string[i+1]=='-')){
                    return false;
                }
                exp=true;
            }
            else if(string[i]>='0'&&string[i]<='9'){}
                //continue;
            else{
                return false;
            }
        }
        return true;
        
    }

};
;