leetcode-468-IPアドレスを確認します

創造を続け、成長を加速させましょう!「ナゲッツデイリーニュープラン・6月アップデートチャレンジ」に参加して5日目です。クリックしてイベントの詳細をご覧ください。

トピックアドレス

与えられた文字列 queryIP有効なIPv4アドレスの場合は、それを返し "IPv4" ます。有効なIPv6アドレスの場合は、 それを返します。"IPv6" 上記のタイプのIPアドレスでない場合は、それを返します "Neither" 。

有効なIPv4アドレス は、 “x1.x2.x3.x4” フォームIPアドレスです。ここで 0 <= xi <= 255 、および  先行ゼロxi を含めることはできません。次に例を示します。  “192.168.1.1” 、 “192.168.1.0” は有効なIPv4アドレス、 “192.168.01.1” は無効なIPv4アドレス、、 “192.168.1.00” は [email protected] 無効なIPv4アドレスです。

有効なIPv6アドレスは、“x1:x2:x3:x4:x5:x6:x7:x8” 次の形式のIPアドレスです。

  • 1 <= xi.length <= 4
  • xi は、  数字、小文字の英字(   to   )、および大文字の英字 (  to  )を含むことができる16進文字列です 。'a''f''A''F'
  • 先行ゼロはで許可され xi ます。

たとえば、 "2001:0db8:85a3:0000:0000:8a2e:0370:7334" と "2001:db8:85a3:0:0:8A2E:0370:7334" は有効なIPv6アドレスですが、 "2001:0db8:85a3::8A2E:037j:7334" と "02001:0db8:85a3:0000:0000:8a2e:0370:7334" は無効なIPv6アドレスです。

例1:

输入: queryIP = "172.16.254.1"
输出: "IPv4"
解释: 有效的 IPv4 地址,返回 "IPv4"
复制代码

例2:

输入: queryIP = "2001:0db8:85a3:0:0:8A2E:0370:7334"
输出: "IPv6"
解释: 有效的 IPv6 地址,返回 "IPv6"
复制代码

例3:

输入: queryIP = "256.256.256.256"
输出: "Neither"
解释: 既不是 IPv4 地址,又不是 IPv6 地址
复制代码

ヒント:

  • queryIP 英語の文字、数字、文字、 '.' および のみで構成されます':' 。

問題解決のアイデア

この質問の特定のキャラクターには、次の3つの状況があります。

  1. 指定された文字は有効なIPv4アドレスです
  2. 指定された文字は有効なIPv6アドレスです
  3. 指定された文字は、有効なIPv4アドレスでも有効なIPv6アドレスでもありません

したがって、与えられた条件に従って、それが有効なIPアドレスであるかどうかを判断するだけで済みます。

コード

var validIPAddress = function(queryIP) {
    const v4Arr = queryIP.split('.')
    const v4Reg = /^[0-9]{1,3}$/g
    const v6Reg = /^[0-9a-fA-F]{1,4}(:[0-9a-fA-F]{1,4}){7}$/g

    if(v4Arr.length === 4){
        for(let i = 0;i<4;i++){
            let item = v4Arr[i]
            v4Reg.lastIndex = 0

            if(!v4Reg.test(item) || (item.length>1 && item[0]==='0') || item*1>255){
                return 'Neither'
            }
        }

        return 'IPv4'
    }
    
    if(v6Reg.test(queryIP)){
        return 'IPv6'
    }

    return 'Neither'
}
复制代码

これまでに、  leetcode-468-IPアドレスの確認を完了しました

ご質問やご提案がございましたら、メッセージを残してご相談ください。

おすすめ

転載: juejin.im/post/7103097618921685005