1. 程式人生 > >劍指offer:表示數值的字串

劍指offer:表示數值的字串

題目描述

請實現一個函式用來判斷字串是否表示數值(包括整數和小數)。例如,字串”+100”,”5e2”,”-123”,”3.1416”和”-1E-16”都表示數值。 但是”12e”,”1a3.14”,”1.2.3”,”+-5”和”12e+4.3”都不是。

class Solution {
public:
    bool isNumeric(char* string)
    {
        if (string == NULL){
            return false;
        }

        if (*string == '+' || *string == '-'
){ string++; } if (*string == '\0'){ return false; } scanDigits(&string); bool numeric = true; if (*string != '\0'){ if (*string == '.'){ string++; scanDigits(&string); if
(*string == 'e' || *string == 'E'){ numeric = isExponential(&string); } } else{ if (*string == 'e' || *string == 'E'){ numeric = isExponential(&string); } } } return
numeric && *string == '\0'; } private: void scanDigits(char **string){ while (**string != '\0'&&**string >= '0'&&**string <= '9'){ (*string)++; } } bool isExponential(char **string){ if (**string != 'e' && **string != 'E'){ return false; } (*string)++; if (**string == '+' || **string == '-'){ (*string)++; } if (**string == '\0'){ return false; } scanDigits(string); return **string == '\0' ? true : false; } };