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;
    }
    
   
};