You are given two strings 'S' and 'P' consisting of lowercase English alphabets. Your task is to find whether the 'P' is present in 'S' as a substring or not.
Note1. There may be more than one occurrence of 'P' in 'S'.
2. Some alphabets in the strings may be repeated.
The first line of input contains a single integer 'T', representing the number of test cases
Then the 'T' test cases follow.
The first line of each test case contains two space-separated strings 'P' and 'S' respectively.
Output Format:
For each test case, print a single line containing “YES” if string 'P' is present in string 'S' as a substring, otherwise print “NO”.
The output for each test case will be printed in a separate line.
Note
You don’t have to print anything, it has already been taken care of. Just implement the given function.
1 <= T <= 100
1 <= |S| <= 10000
1 <= |P| < |S|
Where |S| and |P| represents the length of the string 'S' and 'P' respectively.
Time limit: 1 sec.
3
xxy yxxyxxy
a baac
cfg cgfgfc
YES
YES
NO
In the first test case, there are two substrings equal to P on index 1 and 4 in S.
In the second test case, there are two substrings equal to P on indexes 1 and 2 in S.
In the third test case, P does not exist in S.
3
bbb abba
iqw hdhhdqoa
car caribbean
NO
NO
YES
In the first test case, P does not exist in S.
In the second test case, P does not exist in S.
In the third test case, there is one substring equal to P on index 1 in S.
Can we check all possible substrings to find the pattern?
The idea is to generate all the substrings of ‘S’ of size equal to the size of ‘P’ and match each of them with the ‘P’.
O((N - M) * M), where ‘M’ is the length of the ‘P’ and ‘N’ is the length of ‘S’.
As we are iterating the first N - M characters of the string ‘S’, and for each character at position j we are running a loop from j to j + M, to check for the existence of pattern ‘P’.
O(1).
As we are using constant extra memory.