Problem
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.
Update (2015-02-10):
The signature of the C++
function had been updated. If you still see your function signature accepts a const char *
argument, please click the reload button to reset your code definition.
Solution
/**
* @param {string} s
* @return {boolean}
*/
var isNumber = function(s) {
let exp = false, sign = false, num = false, dec = false
for (let c of s)
if (c >= '0' && c <= '9') num = true
else if (c === 'e' || c === 'E')
if (exp || !num) return false
else exp = true, sign = false, num = false, dec = false
else if (c === '+' || c === '-')
if (sign || num || dec) return false
else sign = true
else if (c === '.')
if (dec || exp) return false
else dec = true
else return false
return num
};
Explain:
Complexity:
- Time complexity : O(n).
- Space complexity : O(1).