13 June 2018

Search for substring in two dimensional array

 Save the string “WELCOMETOZOHOCORPORATION” in a two dimensional array and search for substring like “too” in the two dimensional string both from left to right and from top to bottom.
W E L C O
M E T O Z
O H O C O
R P O R A
T I O N   
And print the start and ending index as
Start index : <1,2>
End index: <3, 2>
import java.util.*;
public class NewClass11 {
       void print(int i,int j,int len,int k)
       {
           System.out.println(i+""+j);
           if(k==0)  //PRINT INDEX OF ROW
           System.out.println(i+""+(j+len));
           else       //PRINT INDEX OF COL
            System.out.println((i+len)+""+j);  
       }
       void Rsearch(char c[][],int l,String sr,int j)
       {
         //row wise search
           for(int i=0;i<=(l-sr.length());i++)
           {String s="";
               for(int k=i;k<i+sr.length();k++){
                  s+=c[j][k];
             }
               if(s.equals(sr))
               {
                   print(j,i,sr.length(),0);
               }
           }
           if(j<l-1)
           {
               Rsearch(c,l,sr,++j);
           }
       }
       void Csearch(char c[][],int l,String sr,int j)
       {
         //column wise search
           for(int i=0;i<=(l-sr.length());i++)
           {    String s="";
               for(int k=i;k<i+sr.length();k++){
                  s+=c[k][j];
             }
               if(s.equals(sr))
               {
                   print(i,j,sr.length(),1);
               }
           }
           if(j<l-1)
           {
               Csearch(c,l,sr,++j);
           }
       }
    public static void main(String args[])
    {
      Scanner s=new Scanner(System.in);
      String k="WELCOMETOZOHOCORPORATION";
      String sr="TOO";

      //SET LENGTH OF 2D ARRAY BASED ON LENGTH OF STRING
      int l=(int)Math.sqrt(k.length());
      if((l*l)<=k.length())
      {
         l++;
      }
        int t=0;
       char c[][]=new char[l][l];

      //STORE VALUES IN 2D ARRY
       for(int i=0;i<l;i++)
       {
           for(int j=0;j<l;j++)
           {
               if(t<k.length())
               c[i][j]=k.charAt(t);
               t++;
           }
       }
       NewClass11 ob=new NewClass11();
       ob.Rsearch(c,l,sr,0);
       ob.Csearch(c,l,sr,0);
    }
}   

No comments:

Post a Comment