65. Valid Number

来源:互联网 发布:mysql my.ini配置 编辑:程序博客网 时间:2024/05/20 11:25

class Solution {
public:
bool isNumber(string s) {

if (s.size() == 0){    return false;}int len = s.size();int index = 0;while(index < len && s[index] == ' ')             //去空格       index++;if (s[index] == '+' || s[index] == '-'){    index++;}if (index == len){    return false;}if(s[index] == '.'){    if(index+1 == len || s[index+1] <'0' || s[index+1] > '9')        return false;}else if(s[index] >'9' || s[index] < '0')     return false;bool numeric = true;scanDigits(s, index, len);if (index < len){    //for floats    if (s[index] == '.')    {        index++;        scanDigits(s, index, len);        if (index < len && (s[index] == 'e' || s[index] == 'E') )        {            numeric = isExponential(s, index, len);        }    }    //for exponential    else if (s[index] == 'e' || s[index] == 'E')    {        numeric = isExponential(s, index, len);    }    else if(s[index] != ' ')         return false;}while(index < len && s[index] == ' ')       index++;return numeric && index == len;

}

void scanDigits(const string &s, int &index, const int &len){    while (index < len && s[index] >= '0' && s[index] <= '9')    {        index++;    }}bool isExponential(const string &s, int &index, const int &len){    if (s[index] == 'e' || s[index] == 'E')    {        index++;        }    if (index <len &&(s[index] == '+' || s[index] == '-'))    {        index++;        }    if (index == len || s[index] == ' ')    {        return false;    }    scanDigits(s, index, len);    while(index < len && s[index] == ' ')       index++;    return index == len ? true : false;}

};

0 0
原创粉丝点击