Skip to main content

Validate an IP Address

Problem Statement
Write a class called myRegex which will contain a string pattern. You need to write a regular expression and assign it to the pattern such that it can be used to validate an IP address. Use the following definition of an IP address:
IP address is a string in the form "A.B.C.D", where the value of A, B, C, and D may range from 0 to 255. Leading zeros are allowed. The length of A, B, C, or D can't be greater than 3.
Some valid IP address:
000.12.12.034
121.234.12.12
23.45.12.56
Some invalid IP address:
000.12.234.23.23
666.666.23.23
.213.123.23.32
23.45.22.32.
I.Am.not.an.ip
In this problem you will be provided strings containing any combination of ASCII characters. You have to write a regular expression to find the valid IPs.
Just write the myRegex class, and we will append your code after the following piece of code automatically before running it:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.Scanner;

class Solution{

    public static void main(String []args)
    {
        Scanner in = new Scanner(System.in);
        while(in.hasNext())
        {
            String IP = in.next();
            System.out.println(IP.matches(new myRegex().pattern));
        }

    }
}
(The class written by you MUST NOT be public)
Sample Input
000.12.12.034
121.234.12.12
23.45.12.56
00.12.123.123123.123
122.23
Hello.IP
Sample Output
true
true
true
false
false
false




package org.developersbrain.solutions;
import java.util.*;

public class Solution {
  
       static String[] convertToStringList(String str){
              char[] chrArray=str.toCharArray();
              int noOfDots=0;
              for(int i=0;i<chrArray.length;i++){
                     if(chrArray[i]=='.') noOfDots++;
              }
              String[] retOut=new String[noOfDots+1];
              for(int i=0,j=0;i<chrArray.length;i++){
                     if(j==0&&i==0) retOut[j]="";
                     if(chrArray[i]=='.') {
                           j++;
                           retOut[j]="";
                     }
                     else retOut[j]=retOut[j]+chrArray[i];
              }
              return retOut;
       }
      
       static boolean validateIP(String str){
              boolean retV=false;
              String[] strList=convertToStringList(str);
              int len=strList.length;
              if(len>4 | len<4) retV=false;
              else{
                     for(int i=0;i<len;i++){
                          
                           try{
                                  if(Integer.parseInt(strList[i]) >=0
                          
                                         && Integer.parseInt(strList[i]) <=255
                             ){
                                         retV=true;
                                  }else{
                                         retV=false;
                                         return retV;
                                  }
                                  }catch(Exception e){
                                         retV=false;
                                         return retV;
                                  }
                     }
              }
              return retV;
       }
      
    public static void main(String[] args) {
        Scanner scan=new Scanner(System.in);
        String ipAddr=scan.next();
        System.out.println(validateIP(ipAddr));
    }

}

Comments

Popular posts from this blog

CODILITY: Determine whether given string of parentheses is properly nested.

Task description A string S consisting of N characters is called  properly nested  if: S is empty; S has the form " (U) " where U is a properly nested string; S has the form " VW " where V and W are properly nested strings. For example, string " (()(())()) " is properly nested but string " ()) " isn't. Write a function: class Solution { public int solution(String S); } that, given a string S consisting of N characters, returns 1 if string S is properly nested and 0 otherwise. For example, given S = " (()(())()) ", the function should return 1 and given S = " ()) ", the function should return 0, as explained above. Assume that: N is an integer within the range [ 0 .. 1,000,000 ]; string S consists only of the characters " ( " and/or " ) ". Complexity: expected worst-case time complexity is O(N); expected worst-case space complexity is O(1) (not counting the storage requi...

Distinct: Compute number of distinct values in an array.

Task description Write a function class Solution { public int solution(int[] A); } that, given a zero-indexed array A consisting of N integers, returns the number of distinct values in array A. Assume that: N is an integer within the range [ 0 .. 100,000 ]; each element of array A is an integer within the range [ −1,000,000 .. 1,000,000 ]. For example, given array A consisting of six elements such that: A[0] = 2 A[1] = 1 A[2] = 1 A[3] = 2 A[4] = 3 A[5] = 1 the function should return 3, because there are 3 distinct values appearing in array A, namely 1, 2 and 3. Complexity: expected worst-case time complexity is O(N*log(N)); expected worst-case space complexity is O(N), beyond input storage (not counting the storage required for input arguments). Elements of input arrays can be modified. class Solution { public int solution ( int [] A) { // write your code in Java SE 8 int len=A.length; int count= 1 ; ...

change directory (cd) function for an abstract file system ( Java Implementation )

Write a function that provides change directory (cd) function for an abstract file system. Notes: Root path is '/'. Path separator is '/'. Parent directory is addressable as "..". Directory names consist only of English alphabet letters (A-Z and a-z). For example, new Path("/a/b/c/d").cd("../x").getPath() should return "/a/b/c/x". Note: The evaluation environment uses '\' as the path separator. public class Path {     private String path;     public Path(String path) {         this.path = path;     }     public String getPath() {         return path;     }     public Path cd(String newPath) {         //throw new UnsupportedOperationException("Waiting to be implemented."); String[] newP=newPath.split("/");     String[] oldP=path.split("/");     int lnCount=0;     for(String str:newP){     if(st...