Descrição do Desafio: Validação de Endereços IP

22/11/2024


O desafio consiste em validar se uma string fornecida representa um endereço IP válido no formato IPv4. Um endereço IP é uma sequência no formato A.B.C.D, onde:

  • Cada bloco (A, B, C e D) é um número entre 0 e 255.
  • Zeros à esquerda nos blocos são permitidos (por exemplo, 000, 012).

Regras:

  1. O programa deve receber uma sequência de strings e determinar se cada uma delas é um endereço IP válido.
  2. Para que um endereço IP seja válido:
    • Deve conter exatamente 4 blocos numéricos separados por pontos (.).
    • Cada bloco deve estar no intervalo de 0 a 255.
    • Blocos podem conter zeros à esquerda, mas não podem ser vazios.

Formato de Entrada:

  • O programa recebe strings consecutivas representando os possíveis endereços IP.

Formato de Saída:

  • Para cada string, o programa imprime:
    • "true" se a string for um endereço IP válido.
    • "false" caso contrário.

Exemplo de Entrada:


000.12.12.034
121.234.12.12
23.45.12.56
00.12.123.123123.123
122.23
Hello.IP


Exemplo de Saída:


  1. true  
  2. true  
  3. true  
  4. false  
  5. false  
  6. false  

Solução:

O desafio foi resolvido criando uma classe MyRegex que contém uma expressão regular (regex) para validar endereços IP. A regex verifica:

  • A presença de 4 blocos numéricos.
  • Cada bloco separado por um ponto (.).
  • Cada bloco no intervalo permitido (0 a 255), incluindo zeros à esquerda.

Importância do Desafio:

Este exercício é um exemplo clássico de validação usando expressões regulares. Ele é útil para quem trabalha com manipulação de strings, validação de dados de entrada e desenvolvimento de sistemas que lidam com redes. Além disso, ajuda a reforçar conceitos de regex e lógica de programação.


  1. import java.util.regex.Matcher;  
  2. import java.util.regex.Pattern;  
  3. import java.util.Scanner;  
  4.   
  5. class Solution{  
  6.   
  7.     public static void main(String[] args){  
  8.         Scanner in = new Scanner(System.in);  
  9.         while(in.hasNext()){  
  10.             String IP = in.next();  
  11.             System.out.println(IP.matches(new MyRegex().pattern));  
  12.         }  
  13.   
  14.     }  
  15. }  
  16.   
  17.   
  18. class MyRegex {  
  19.     String pattern = "^((25[0-5]|2[0-4][0-9]|1[0-9]{2}|0?[0-9]{1,2})\\.)"  
  20.                    + "{3}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|0?[0-9]{1,2})$";  
  21. }  
  22.         


Este desafio foi retirado do HackerRank: