Validate if a given string is numeric.
Some examples:"0"
=> true
" 0.1 "
=> true
"abc"
=> false
"1 a"
=> false
"2e10"
=> true
Note: It is intended for the problem statement to be ambiguous. You should gather all requirements up front before implementing one.
思路:A e B
A 可以是小数,整数 e 后面必须紧跟 +-, 后面B必须是整数,最后返回numberseen;因为扫描最后就是number;
class Solution {
public boolean isNumber(String s) {
s = s.trim().toLowerCase();
// AeB
boolean eseen = false;
boolean numberseen = false;
boolean dotseen = false;
for(int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if('0' <= c && c <= '9') {
numberseen = true;
} else if(c == 'e') {
if(eseen || !numberseen) {
return false;
}
eseen = true;
numberseen = false; // 注意这里看见了e之后,numberseen = false;
} else if(c == '.') {
if(eseen || dotseen) {
return false;
}
dotseen = true;
} else if(c == '+' || c == '-') {
if(i >= 1 && s.charAt(i - 1) != 'e') {
return false;
}
} else {
return false;
}
}
return numberseen; //最后返回是否看见number;
}
}