Skip to content

Instantly share code, notes, and snippets.

@wushbin
Created February 16, 2020 02:27
Show Gist options
  • Select an option

  • Save wushbin/e0dba90212bf1a8c8a03f315600c627c to your computer and use it in GitHub Desktop.

Select an option

Save wushbin/e0dba90212bf1a8c8a03f315600c627c to your computer and use it in GitHub Desktop.
class Solution {
public boolean isNumber(String s) {
int idx = 0;
boolean seenE = false;
boolean seenDot = false;
boolean seenSign = false;
boolean seenNum = false;
s = s.trim();
while(idx < s.length()) {
if (s.charAt(idx) == 'e') {
if (seenE || !seenNum) return false;
// end of a num
if (seenDot && !seenNum) {
return false;
}
if (seenSign && !seenNum) {
return false;
}
seenE = true;
// another num after e
seenNum = false;
seenSign = false;
seenDot = false;
} else if (s.charAt(idx) == '.') {
if (seenDot || seenE) return false;
seenDot = true;
} else if (s.charAt(idx) == '+' || s.charAt(idx) == '-') {
if (seenNum || seenDot || seenSign) {
return false;
}
seenSign = true;
} else if (Character.isDigit(s.charAt(idx))) {
seenNum = true;
} else {
return false;
}
idx++;
}
if (!seenNum) {
return false;
}
if (seenDot && !seenNum) {
return false;
}
if (seenSign && !seenNum) {
return false;
}
return true;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment