• 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)
        
    };
  • 相关阅读:
    P3704 [SDOI2017]数字表格
    CF 700 E. Cool Slogans
    杜教筛学习笔记
    [BOI2004]Sequence 数字序列(左偏树)
    [WC2007]剪刀石头布(最大流)
    [NOI2009]变换序列(二分图匹配)
    文理分科(最小割)
    上帝与集合的正确用法(欧拉定理)
    [HAOI2008]圆上的整点(数论)
    主席树学习笔记
  • 原文地址:https://www.cnblogs.com/xingguozhiming/p/10512735.html
Copyright © 2020-2023  润新知