Given two 1-dimensional arrays containing strings of lowercase alphabets, print the elements that are common in both the arrays i.e. the strings that are present in both the arrays.
Note:An element of one array can be mapped only to one element of the array. For example :
Array 1 = {“ab”, “dc”, “ab”, “ab”}
Array 2 = {“dc”, “ab”, “ab”}
The common elements for the above example will be “dc”, “ab”, and “ab”.
The first line of input contains an integer 'T' representing the number of test cases. Then the test cases follow.
The first line of each test case includes two integers, 'N' and 'M', representing the sizes of both the arrays.
The second line of each test case contains 'N' single-spaced strings representing the elements of the first array.
The third line of each test case contains 'M' single-spaced strings representing the elements of the second array.
Output Format:
For each test case, the common elements of both arrays are printed in the order in which they appear in the second array. The elements are printed in a single space-separated manner.
The output for each test case will be printed in a separate line.
Note:
You do not need to print anything, it has already been taken care of. Just return the common elements in the specified order.
1 <= T <= 10
1 <= N, M <= 10000
1 <= S <= 10
Where 'T' is the number of test cases. 'N' and 'M' are the sizes of both the arrays and 'S' is the length of the strings of the arrays. Also, the strings contain only lowercase alphabets.
Time limit: 1 sec.
1
3 5
at bat rat
rat bar bat rat to
rat bat
The common elements of both the arrays are “bat” and “rat”. Thus, these two elements are printed in the order in which they appear in the second array.
2
2 2
a b
c d
2 1
coding ninjas
coding
coding
There are no common elements for the first test case. For the second case, “coding” is the common element.
For each string in the second array, check if it exists in the first array.
The main idea behind this approach is to solve the problem intuitively, and for each string in the second array, check if it exists in the first array (we are checking for each string in the second array because we need the output in the order in which they appear in the second array).
Algorithm :
O(N * M), where ‘N’ and 'M' are the sizes of both the arrays.
For each string in the second array, we are traversing the first array. Thus, the final time complexity will be O(N * M).
O(K), where ‘K’ = min('N', ‘M’) i.e. ‘K’ is the minimum of the sizes of both the arrays.
Additional space is used to store the answer i.e. the common strings of both the arrays. The number of common strings of both the arrays would be K = min(N, M) and thus, the final space complexity is O(K).