leetcode-468 - verifique o endereço IP

Continue a criar, acelere o crescimento! Este é o 5º dia da minha participação no "Nuggets Daily New Plan · June Update Challenge", clique para ver os detalhes do evento

endereço do tópico

Dada uma string  queryIP. Se for um endereço IPv4 válido, devolva  "IPv4" -o; se for um endereço IPv6 válido, devolva  "IPv6" -o; se não for um endereço IP do tipo acima, devolva-o  "Neither" .

Um endereço IPv4 válido  é o  “x1.x2.x3.x4” endereço IP do formulário. onde  0 <= xi <= 255 e  xi não pode conter  zeros à esquerda. Por exemplo:  “192.168.1.1” ,  “192.168.1.0” é um endereço IPv4 válido,  “192.168.01.1” é um endereço IPv4 inválido;  “192.168.1.00” ,  [email protected] é um endereço IPv4 inválido.

Um endereço IPv6 válido é um “x1:x2:x3:x4:x5:x6:x7:x8” endereço IP no formato, onde:

  • 1 <= xi.length <= 4
  • xi é uma  string hexadecimal  que pode conter números, letras minúsculas em inglês (  'a' to  'f' ) e letras maiúsculas em inglês (  'A' to  'F' ).
  • Zeros à esquerda são permitidos em  xi .

Por exemplo  , "2001:0db8:85a3:0000:0000:8a2e:0370:7334" e  "2001:db8:85a3:0:0:8A2E:0370:7334" é um endereço IPv6 válido, enquanto  "2001:0db8:85a3::8A2E:037j:7334" e  "02001:0db8:85a3:0000:0000:8a2e:0370:7334" é um endereço IPv6 inválido.

Exemplo 1:

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

Exemplo 2:

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

Exemplo 3:

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

dica:

  • queryIP Consiste apenas em letras, números, caracteres  '.' e  ':' .

Ideias para resolver problemas

O personagem dado nesta questão pode ter as 3 situações a seguir:

  1. Os caracteres fornecidos são endereços IPv4 válidos
  2. Os caracteres fornecidos são endereços IPv6 válidos
  3. O caractere fornecido não é um endereço IPv4 válido nem um endereço IPv6 válido

Portanto, só é necessário julgar se é um endereço IP válido de acordo com as condições dadas.

Código

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'
}
复制代码

Até agora,  concluímos o endereço IP leetcode-468-verify

Se você tiver alguma dúvida ou sugestão, por favor deixe uma mensagem para discutir!

Acho que você gosta

Origin juejin.im/post/7103097618921685005
Recomendado
Clasificación