表示数值的字符串

来源:互联网 发布:java图形界面开发插件 编辑:程序博客网 时间:2024/06/05 15:47

题目描述

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

先要搞清楚哪些是表示数值,除了列出来的,'1.2e+2','.1'也是数值,'12e',‘12.’ 就不是数值

class Solution {public:    bool isNumeric(char* string) {        if (string == NULL)            return false;        if (*string == '+' || *string == '-')            ++string;        scanNum(&string);        if (*string == '\0')            return true;        //判断小数        if (*string == '.') {            ++string;            if (*string == '\0')//小数点后面没有数字                return false;            scanNum(&string);            if (*string == '\0')//小数点后面只有数字                return true;            else if (*string == 'e' || *string == 'E')//小数点后面有指数                return isExp(&(++string));        }        //判断指数        else if (*string == 'e' || *string == 'E') {            return isExp(&(++string));        }        return false;    }    //扫描数字    void scanNum(char** str) {        while (**str!='\0'&&**str >= '0'&&**str <= '9')            ++(*str);    }    //判断是不是指数    bool isExp(char** str){        if(**str=='\0')            return false;        if(**str=='+'||**str=='-'){            ++(*str);            if(**str=='\0')                return false;        }        scanNum(str);        if(**str=='\0')            return true;        else            return false;    }};


原创粉丝点击