@@ -15,16 +15,18 @@ public int findArray(int[] array, int[] subArray) {
1515 }
1616 int subArrayFirstElement = subArray [0 ];
1717 int startIndex = -1 ;
18- for (int i = 0 ; i < array .length ; i ++) {
18+ int i = 0 ;
19+ while (i < array .length ) {
1920 if (array [i ] == subArrayFirstElement ) {
2021 if (subArray .length == 1 ) {
2122 startIndex = i ;
2223 return startIndex ;
2324 }
2425 int j = i + 1 ;
25- int k = 1 ;
26+ int k = 1 ; // k is to keep track of sub-array index.
2627 while (j < array .length && k < subArray .length ) {
2728 if (array [j ] != subArray [k ]) {
29+ i = j ;
2830 break ;
2931 }
3032 if (k == subArray .length - 1 ) {
@@ -34,6 +36,8 @@ public int findArray(int[] array, int[] subArray) {
3436 j ++;
3537 k ++;
3638 }
39+ } else {
40+ i ++;
3741 }
3842 }
3943 return startIndex ;
@@ -42,6 +46,8 @@ public int findArray(int[] array, int[] subArray) {
4246 public static void main (String [] args ) {
4347 FindArray findArray = new FindArrayImpl ();
4448
45- System .out .println (findArray .findArray (new int []{7 , 8 , 9 , 11 , 8 , 9 , 1 ,10 }, new int []{8 , 9 , 10 }));
49+ System .out .println (findArray .findArray (new int []{7 , 8 , 9 , 11 , 8 , 9 , 1 , 10 }, new int []{8 , 9 , 10 }));
50+ System .out .println (findArray .findArray (new int []{7 , 8 , 9 , 11 , 8 , 9 , 10 }, new int []{8 , 9 , 10 }));
51+ System .out .println (findArray .findArray (new int []{7 , 8 , 9 , 11 , 8 , 9 , 8 , 9 , 10 }, new int []{8 , 9 , 10 }));
4652 }
4753}
0 commit comments