答案:
class Solution {
public:
bool isNumber(string s) {
int i = 0;
int n_pt,n_num;//记录点和数字的个数
for(; s[i] == ' '; i++) {}//去除开头的空格
if(s[i] == '+' || s[i] == '-') i++;//去除开头的正负号
for(n_num = 0,n_pt = 0;(s[i] >= '0' && s[i] <= '9')|| s[i] =='.';i++){
s[i] == '.'?n_pt++:n_num++;
}//遍历并记录点和数字的个数
if(n_pt > 1 || n_num < 1){
return false;
}//如果小数点超过1或者数字数目少于1就返回false
if(s[i] == 'e'){
++i;
if(s[i] == '+' || s[i] == '-') i++;
int n_nm = 0;
for(;s[i] >= '0' && s[i] <= '9';i++,n_nm++){}//记录e后面的数字个数
if(n_nm < 1){
return false;
}
}
for(;s[i] == ' ';i++){}
return s[i] == 0;//最后遍历到字符串的尾
//或者s[i] == '\0';
}
};