Assume that both arrays passed to your function will have a length of at least 1.
This means that the shortest possible mirror will be of length 1, representing a single element (which is its own mirror).
A sequence that is a palindrome (the same forwards as backwards) is considered its own mirror and should be included in your computations.
For example, if a1 is {6, 1, 2, 1, 4, 1, 2, 1, 5}
and a2 is {1, 2, 1}
, your function should return true
.
The two occurrences of the mirror might overlap, as shown in the fourth sample call below.
The following table shows some calls to your function and their expected results:
Arrays |
Returned Value |
int[] a1 = {6, 1, 2, 1, 3, 1, 3, 2, 1, 5}; int[] a2 = {1, 2}; |
hasMirrorTwice(a1, 10, a2, 2) returns true |
int[] a3 = {5, 8, 4, 18, 5, 42, 4, 8, 5, 5}; int[] a4 = {4, 8, 5}; |
hasMirrorTwice(a3, 10, a4, 3) returns false |
int[] a5 = {6, 3, 42, 18, 12, 5, 3, 42, 3, 42}; int[] a6 = {42, 3}; |
hasMirrorTwice(a5, 10, a6, 2) returns true |
int[] a7 = {6, 1, 2, 4, 2, 1, 2, 4, 2, 1, 5}; int[] a8 = {1, 2, 4, 2, 1}; |
hasMirrorTwice(a7, 11, a8, 5) returns true |
int[] a9 = {0, 0}; int[] aa = {0}; |
hasMirrorTwice(a9, 2, aa, 1) returns true |
int[] ab = {8, 9, 2, 1}; int[] ac = {5, 7, 1, 2, 9, 8}; |
hasMirrorTwice(ab, 4, ac, 6) returns false |
Do not modify the contents of the arrays passed to your function as parameters.