zoukankan      html  css  js  c++  java
  • 65. Valid Number(js)

    65. Valid Number

    Validate if a given string can be interpreted as a decimal number.

    Some examples:
    "0" => true
    " 0.1 " => true
    "abc" => false
    "1 a" => false
    "2e10" => true
    " -90e3   " => true
    " 1e" => false
    "e3" => false
    " 6e-1" => true
    " 99e2.5 " => false
    "53.5e93" => true
    " --6 " => false
    "-+3" => false
    "95a54e53" => false

    题意:给定一个字符串,是否可以转换为数字

    代码如下:

    /**
     * @param {string} s
     * @return {boolean}
     */
    var isNumber = function(s) {
    //     法一
        let len=s.length;
        let left=0,right=len-1;
        let eExisted=false;
        let dotExisted=false;
        let digitExisted=false;
        while(s[left]===' ') left++;
        while(s[right]===' ') right--;
        if(left>=right && (parseInt(s[left])<0 || parseInt(s[right])>9 )) return false;
        //判断第一个字符
        if(s[left]==='.') dotExisted=true;
        else if(parseInt(s[left])>=0 && parseInt(s[left])<=9) digitExisted=true;
        else if(s[left]!=='+' && s[left]!=='-') return false;
        //遍历中间每个字符
        for(let i=left+1;i<=right-1;i++){
            if(parseInt(s[i])>=0 && parseInt(s[i])<=9) digitExisted=true;
            else if(s[i]==='e' || s[i]==='E'){
                if(!eExisted && s[i-1]!=='+' && s[i-1]!=='-'&&digitExisted ) eExisted=true;
                else return false;
            }else if(s[i]==='+' || s[i]==='-'){
                if(s[i-1]!=='e' && s[i-1]!=='E') return false;
            }else if(s[i]==='.'){
                if(!dotExisted && !eExisted) dotExisted=true;
                else return false;
            }else return false;
            
        }
        if(parseInt(s[right])>=0 && parseInt(s[right])<=9) return true;
        else if(s[right]==='.' && !dotExisted && !eExisted && digitExisted) return true;
        else return false;
    //     法二
        // return s.trim()!=='' && !isNaN(+s)
        
    };
  • 相关阅读:
    Sum Root to Leaf Numbers 解答
    459. Repeated Substring Pattern
    71. Simplify Path
    89. Gray Code
    73. Set Matrix Zeroes
    297. Serialize and Deserialize Binary Tree
    449. Serialize and Deserialize BST
    451. Sort Characters By Frequency
    165. Compare Version Numbers
    447. Number of Boomerangs
  • 原文地址:https://www.cnblogs.com/xingguozhiming/p/10512735.html
Copyright © 2011-2022 走看看