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