Hard
这道题搞懂了到底什么是valid就很简单
class Solution {
public boolean isNumber(String s) {
if (s == null || s.length() == 0){
return false;
}
s = s.trim();
//空值返回false
//字符串前后的空白字符不影响字符串最终的结果
//1.以及.1都是符合标准的小数,但是.不符合
//'+','-'号只可能出现在字符串首位或是e之后
//e的前后必须有数字,e前的数字可以为整数或是小数,e后的数字必须为正/负整数/0
boolean numSeen = false;
boolean numAfterE = false;
boolean eSeen = false;
boolean dotSeen = false;
for (int i = 0; i < s.length(); i++){
if (s.charAt(i) >= '0' && s.charAt(i) <= '9'){
numSeen = true;
numAfterE = true;
} else if (s.charAt(i) == '+' || s.charAt(i) == '-'){
if (i != 0 && s.charAt(i - 1) != 'e'){
return false;
}
} else if (s.charAt(i) == '.'){
if (dotSeen || eSeen){
return false;
}
dotSeen = true;
} else if (s.charAt(i) == 'e'){
if (eSeen || !numSeen){
return false;
}
numAfterE = false;
eSeen = true;
} else {
return false;
}
}
return numSeen && numAfterE;
}
}