@@ -23,29 +23,45 @@ public static void main(String[] args) {
2323            for  (int  P_i  = 0 ; P_i  < r ; P_i ++) {
2424                P [P_i ] = in .next ();
2525            }
26-             int  count  = 0 ;
27-             int  start  = -1 ;
2826
27+             // create 2D array for grid 
28+             int  grid [][] = new  int [R ][C ];
29+             for  (int  i  = 0 ; i  < R ; i ++) {
30+                 for  (int  j  = 0 ; j  < C ; j ++) {
31+                     grid [i ][j ] = Character .getNumericValue (G [i ].charAt (j ));
32+                 }
33+             }
34+ 
35+             // create 2D array for pattern to be searched in grid 
36+             int  pattern [][] = new  int [r ][c ];
37+             for  (int  i  = 0 ; i  < r ; i ++) {
38+                 for  (int  j  = 0 ; j  < c ; j ++) {
39+                     pattern [i ][j ] = Character .getNumericValue (P [i ].charAt (j ));
40+                 }
41+             }
42+ 
43+             // search logic 
44+             outerLoop :
2945            for  (int  G_i  = 0 ; G_i  < R ; G_i ++) {
30-                 if  ((start  = G [G_i ].indexOf (P [0 ], start  + 1 )) > -1 ) {
31-                     count  = 1 ;
32-                     for  (int  P_i  = 1 ; P_i  < r  && G_i  + P_i  < R ; P_i ++) {
33-                         if  (G [G_i  + P_i ].indexOf (P [P_i ]) != start ) {
34-                             break ;
46+                 for  (int  G_j  = 0 ; G_j  < C ; G_j ++) {
47+                     innerLoop :
48+                     for  (int  P_i  = 0 ; P_i  < r  && G_i  + P_i  < R ; P_i ++) {
49+                         for  (int  P_j  = 0 ; P_j  < c  && G_j  + P_j  < C ; P_j ++) {
50+                             if  (grid [G_i  + P_i ][G_j  + P_j ] != pattern [P_i ][P_j ]) {
51+                                 break  innerLoop ;
52+                             } else  if  (P_i  == r  - 1  && P_j  == c  - 1 ) {
53+                                 System .out .println ("YES" );
54+                                 break  outerLoop ;
55+                             }
3556                        }
36-                          count ++; 
57+ 
3758                    }
38-                     if  (count  == r ) {
39-                         System .out .println ("YES" );
40-                         break ;
41-                     } else  {
42-                         G_i  = 0 ;
59+                     if  (R  - G_i  < r ) { // no. of rows left in grid less than no. of rows in pattern 
60+                         System .out .println ("NO" );
61+                         break  outerLoop ;
4362                    }
4463                }
4564            }
46-             if  (count  != r ) {
47-                 System .out .println ("NO" );
48-             }
4965        }
5066    }
5167}
0 commit comments