Java
class Solution {
public boolean isNumber(String s) {
//去除空格
s=s.trim();
if(s==null||s.length()==0) return false;
//第一个字符为正负号,直接去掉
if(s.charAt(0)=='+'||s.charAt(0)=='-') s=s.substring(1);
// +, -, .,
if(s.isEmpty()||(s.charAt(0)=='.'&&s.length()==1)) return false;
//点的数量和e的数量
int dot=0,e=0;
for(int i=0;i<s.length();i++){
if(s.charAt(i)>='0'&&s.charAt(i)<='9');
else if(s.charAt(i)=='.'){
dot++;
//出现两个.不合法
if(dot>1||e>0) return false;
}
else if(s.charAt(i)=='e'||s.charAt(i)=='E'){
e++;
//e的前后都必须要有数字
if(i==0||i==s.length()-1||e>1||i==1&&s.charAt(i-1)=='.') return false;
//如果出现e+...的情况,则要保证后面有数字
if(s.charAt(i+1)=='+'||s.charAt(i+1)=='-'){
if(i+2==s.length()) return false;
i++;
}
}
else return false;
}
return true;
}
}