LeetCode 题目地址:https://leetcode-cn.com/problems/valid-number/description/
题目
验证给定的字符串是否为数字。
例如:
"0"
=> true
" 0.1 "
=> true
"abc"
=> false
"1 a"
=> false
"2e10"
=> true
说明: 我们有意将问题陈述地比较模糊。在实现代码之前,你应当事先思考所有可能的情况。
JavaScript:
/**
* @param {string} s
* @return {boolean}
*/
var isNumber = function(s) {
};
解答
代码
/**
* @param {string} s
* @return {boolean}
*/
var isNumber = function(s) {
// 去掉空格
if(s.replace(/\s/g, "") === "") {
return false;
}
if(isNaN(s - 0)) return false;
return true;
};
解析
字符串转数字,我们可以使用一元操作符、函数、算术运算符等方式来判断s是否是数字。
传入的字符串s可以有空格,也就是说,s可能是空字符串或空格字符串,在这种情况下,通过第一步会被转换成0,这种返回结果是不正确的,所以需要将该情况排除掉。所以需要将s中的空格去掉,判断是否为空,如果为空,返回false。
-
性能
之前写过下面的代码
/** * @param {string} s * @return {boolean} */ var isNumber = function(s) { // 去掉空格 if(s.replace(/\s/g, "") === "") { return false; } return !isNaN(s - 0); };
但是发现上述代码的执行时间会较长,说明
if
的执行效率比逻辑运算符的效率更高。转载请注明:转自尹小芃槑