Number of substrings of one string present in other (original) (raw)
Last Updated : 7 Oct, 2022
Suppose we are given a string s1, we need to the find total number of substring(including multiple occurrences of the same substring) of s1 which are present in string s2.
Examples:
Input : s1 = aab s2 = aaaab **Output :**6 Substrings of s1 are ["a", "a", "b", "aa", "ab", "aab"]. These all are present in s2. Hence, answer is 6.
**Input :**s1 = abcd s2 = swalencud **Output :**3
The idea is to consider all substrings of s1 and check if it present in s2.
Implementation:
C++ `
// CPP program to count number of substrings of s1 // present in s2. #include #include using namespace std;
int countSubstrs(string s1, string s2) { int ans = 0;
for (int i = 0; i < s1.length(); i++) {
// s3 stores all substrings of s1
string s3;
for (int j = i; j < s1.length(); j++) {
s3 += s1[j];
// check the presence of s3 in s2
if (s2.find(s3) != string::npos)
ans++;
}
}
return ans;}
// Driver code int main() { string s1 = "aab", s2 = "aaaab"; cout << countSubstrs(s1, s2); return 0; }
Java
// Java program to count number of // substrings of s1 present in s2. import java.util.*;
class GFG {
static int countSubstrs(String s1, String s2) { int ans = 0;
for (int i = 0; i < s1.length(); i++) {
// s3 stores all substrings of s1
String s3 = "";
char[] s4 = s1.toCharArray();
for (int j = i; j < s1.length(); j++)
{
s3 += s4[j];
// check the presence of s3 in s2
if (s2.indexOf(s3) != -1)
ans++;
}} return ans; }
// Driver code public static void main(String[] args) { String s1 = "aab", s2 = "aaaab"; System.out.println(countSubstrs(s1, s2)); } }
// This code is contributed by ChitraNayal
Python 3
Python 3 program to count number of substrings of s1
present in s2.
Function for counting no. of substring
of s1 present in s2
def countSubstrs(s1, s2) : ans = 0 for i in range(len(s1)) : s3 = ""
# s3 stores all substrings of s1
for j in range(i, len(s1)) :
s3 += s1[j]
# check the presence of s3 in s2
if s2.find(s3) != -1 :
ans += 1
return ansDriver code
if name == "main" : s1 = "aab" s2 = "aaaab"
# function calling
print(countSubstrs(s1, s2))This code is contributed by ANKITRAI1
C#
// C# program to count number of // substrings of s1 present in s2. using System;
class GFG { static int countSubstrs(String s1, String s2) { int ans = 0;
for (int i = 0; i < s1.Length; i++) {
// s3 stores all substrings of s1
String s3 = "";
char[] s4 = s1.ToCharArray();
for (int j = i; j < s1.Length; j++)
{
s3 += s4[j];
// check the presence of s3 in s2
if (s2.IndexOf(s3) != -1)
ans++;
}} return ans; }
// Driver code public static void Main(String[] args) { String s1 = "aab", s2 = "aaaab"; Console.WriteLine(countSubstrs(s1, s2)); } }
// This code is contributed // by Kirti_Mangal
PHP
JavaScript
`
Complexity Analysis:
- Time Complexity: O(n*n*n), as nested loops are used where n is the size of string s1
- Auxiliary Space: O(n), as extra space for string s3 is being used