Treasure and Jewels

Easy
0/40
Average time to solve is 30m
profile
Contributed by
1 upvote
Asked in company
Amazon

Problem statement

Ninja luckily found a treasure hidden in his backyard. He found some stones in the treasure box and Ninja thought that these stones could be valuable. He went to a stone expert, and the expert gave him a list ‘JEWELS’ consisting of the names of all valuable jewels. Ninja made the list ‘STONES’ of all stones he found in the treasure. All stones and Jewels are represented by English characters. Now, Ninja wants to know the number of jewels he found in the treasure box. Can you help the Ninja?

Note: ‘JEWELS’ consist of distinct characters and ‘A’ and ‘a’ are treated as two different stone types.

For Example
If ‘STONES’ is “abAAc” and JEWELS is “Acd”.The number of jewels Ninja have is 3.
Detailed explanation ( Input/output format, Notes, Images )
Input Format:
The first line of the input contains an integer, 'T,’ denoting the number of test cases.

The first line of each test case contains two integers, ‘N’ denoting the number of stones and M denoting the number of Jewels.

The second line of each test case contains an string of size N denoting ‘STONES’

The third line of each test case contains an string of size M denoting ‘JEWELS’
Output Format:
For each test case, print an single integer denoting the number of jewels Ninja found in the treasure box.

Print the output of each test case in a separate line.
Note:
You do not need to print anything. It has already been taken care of. Just implement the given function.
Constraints:
1 <= T <= 10
1 <= N <= 10000.
1 <= M <= 52 

Time Limit = 1 sec
Sample Input 1:
2 
5 3
abAAc
Acd
4 2
acbd
Aa
Sample Output 1:
3
1
Explanation of sample input 1:
For the first test case,

Ninja has 3 jewels, one ‘c’ and two ‘A’.Hence, the answer is 3.


For the second test case:

Ninja has only 1 jewel, one ‘a’.Hence, the answer is 1.
Sample Input 2:
2
3 1
aaa
b
4 2
abcd
Bb
Sample Output 2:
0
1
Hint

Check the JEWELS list for each stone.

Approaches (2)
Brute Force

In this approach, for each character in ‘STONES’ , we will iterate the ‘JEWELS’ string and check if the stone is a jewel or not. If we found a jewel, we will increment the ‘ANS’.

At last, we will return the ‘ANS’ corresponding to the number of jewels Ninja found.

 

Algorithm:

 

  • Set ‘ANS’ as 0.
  • For ‘CH’  in ‘STONES’,do the following:
    • For i in ‘JEWELS’:
      • If i is equal to CH:
        • Found a jewel.
        • Set ‘ANS’ as ‘ANS’ + 1.
        • Break.
  • Return ‘ANS’.
Time Complexity

O(N*M), where ‘N’ is the number of stones and ‘M’ is the length of the ‘JEWELS’ string.

 

In this approach, we are checking the whole ‘JEWELS’ string for each character in the ‘STONES’ string, the total number of operations will be M*N. Hence, the overall time complexity is O(M*N).

Space Complexity

O(1).

 

In this approach, we are using constant space. Hence, the overall space complexity is O(1).

Code Solution
(100% EXP penalty)
Treasure and Jewels
Full screen
Console