import java.util.*;

public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param str string字符串 * @return bool布尔型 */ public boolean isNumeric (String str) { String str1 = str.trim(); if(str1.length() == 0) return false;

	return is_int(str1) || is_double(str1) || is_sic(str1);
}
private boolean is_int(String str) {
    if(str.length() == 0) return false;
	boolean flag = false;
	int i = 0;
	char c = str.charAt(i);
	if(c=='+' || c=='-') i++;
	else if(c>='0' && c<='9') {
		if(str.length() == 1) return true;
		i++;
	}
	else return false;
	
	for(;i < str.length();i++) {
		char c1 = str.charAt(i);
		if(i == str.length()-1) {
			if(c1>='0' && c1<='9') {
				flag = true;
				break;
			}else break;
		}
		
		if(c1>='0' && c1<='9') continue;
		else break;
	}
	
	return flag;
}
private boolean is_double(String str) {
	if(str.length() == 0) return false;
	boolean flag = false;
	boolean has_point = false;
	boolean has_num = false;
	int i = 0;
	char c = str.charAt(i);
	if(c=='+' || c=='-') i++;
	else if(c>='0' && c<='9') {
		has_num = true;
		i++;
	}
	else if(c == '.') {
		has_point = true;
		i++;
	}else return false;
	
	for(;i < str.length();i++) {
		char c1 = str.charAt(i);
		if(i == str.length()-1) {
			if(c1>='0' && c1<='9') {
				flag = true;
				break;
			}else if(c1=='.' && !has_point && has_num) {
				flag = true;
				break;
			}else break;
		}
		
		if(c1>='0' && c1<='9') {
			has_num = true;
			continue;
		}
		else if(c1=='.') {
			if(has_point) break;
			else {
				has_point = true;
				continue;
			}
		}else break;
	}
	
	return flag;
}
private boolean is_sic(String str) {
	String[] split = str.split("e");
	String[] split1 = str.split("E");
	if(split.length!=2 && split1.length!=2) return false;
	boolean flag = false;
	if(split.length==2) flag = (is_int(split[0]) || is_double(split[0])) && (is_int(split[1]));
	if(split1.length==2) flag = flag || (is_int(split1[0]) || is_double(split1[0])) && (is_int(split1[1]));
	return flag;
}

}