public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param str string字符串
* @return bool布尔型
*/
bool isNumeric(string str) {
// write code here
int i = 0;
while(str[i] == ' '){
i++;
}
if(str[i] == '+' || str[i] == '-'){
i++;
}
//判断第一个整数
int j = i;
while('0' <= str[j] && str[j] <= '9'){
j++;
}
if(j > i){
while(str[j] == ' '){
j++;
}
}
if(j > i &&(str[j] == 'e' || str[j] == 'E')){
j++;
if(str[j] == '+' || str[j] == '-'){
j++;
}
int m = j;
while('0' <= str[j] && str[j]<= '9'){
j++;
}
if(j == m){
return false;
}
if(j > m){
while(str[j] == ' '){
j++;
}
}
}
if(j == str.size() && j != i){
return true;
}
//判断第一个小数
int k = i;
while('0' <= str[k] && str[k] <= '9'){
k++;
}
if(k > i && str[k] == '.'){
k++;
}
if( (k-1) > i && str[k-1] == '.' && '0' <= str[k] && str[k] <= '9'){
while('0' <= str[k] && str[k] <= '9'){
k++;
}
}
if(k == i && str[k] == '.'){
k++;
while('0' <= str[k] && str[k] <= '9'){
k++;
}
if(k == (i+1)){
return false;
}
}
if(k < i + 2){
return false;
}
if((str[k] == 'e' || str[k] == 'E')){
k++;
if(str[k] == '+' || str[k] == '-'){
k++;
}
int n = k;
while('0' <= str[k] && str[k] <= '9'){
k++;
}
if(k == n){
return false;
}
while(str[k] == ' '){
k++;
}
}
if(k == str.size() && k != i){
return true;
}
return false;
}
};