美文网首页
468. Validate IP Address

468. Validate IP Address

作者: jluemmmm | 来源:发表于2021-02-02 13:50 被阅读0次

    验证输入的字符串是否是有效的IP地址:

    • IPv4 地址由十进制数和点来表示,每个地址包含4个十进制数,范围为 0-255,用 . 进行分割。IPv4地址内的数不会以0开头。

    • IPv6地址由8组16进制的数字表示,每组表示16比特,这些组数字通过 . 分割,忽略0开头,忽略大小写。

    时间复杂度 O(1),空间复杂度O(1)

    正则判断

    • Runtime: 80 ms, faster than 55.68%
    /**
     * @param {string} IP
     * @return {string}
     */
    var validIPAddress = function(IP) {
        if(IP.indexOf('.') > -1) {
            return /^((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])$/g.test(IP) ? "IPv4" : "Neither"
        } else if(IP.indexOf(':')) {
            return /^(([0-9a-fA-F]{1,4})\:){7}([0-9a-fA-F]{1,4})$/g.test(IP) ? "IPv6" : "Neither"
        }
        return "Neither"
    };
    

    常规判断方法

    首先判断长度,然后判断每一项的长度,以0开头,然后判断每一项的组成元素

    • Runtime: 72 ms, faster than 92.43%
    • Memory Usage: 38.6 MB, less than 48.65%
    /**
     * @param {string} IP
     * @return {string}
     */
    var validIPAddress = function(IP) {
        if(IP.indexOf('.') > 0) {
            let ipvf = IP.split('.')
            if(ipvf.length !== 4) {
                return 'Neither'
            }
            let res = ipvf.every(item => {
                if(item[0] === '0' && item.length > 1 || item.length === 0) {
                    return false
                } else {
                    let t = item.split('').every(i => '0123456789'.indexOf(i) > -1) && item - '0' >= 0 && item - '0' <= 255
                    return t
                }
            })
            return res ? 'IPv4' : 'Neither'
        } else if(IP.indexOf(':') > 0) {
            let ipvs = IP.split(':')
            if(ipvs.length !== 8) {
                return 'Neither'
            }
            let res = ipvs.every(item => {
                if(item.length > 4 || item.length === 0) {
                    return false
                } else {
                    let t = item.split('').every(i => '0123456789abcdefABCDEF'.indexOf(i) > -1)
                    return t
                }
            })
            return res ? 'IPv6' : 'Neither'
        }
        return 'Neither'
    };
    

    相关文章

      网友评论

          本文标题:468. Validate IP Address

          本文链接:https://www.haomeiwen.com/subject/ywqytltx.html