GeeksforGeeks App
Open App
Browser
Continue

# Number of substrings of one string present in other

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.

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` `ans` `# Driver 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

 ``

Output

`6`

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

My Personal Notes arrow_drop_up