Open In App

Number of substrings of one string present in other

Last Updated : 07 Oct, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

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<iostream>
#include<string>
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




<?php
// PHP program to count number of
// substrings of s1 present in s2.
 
function countSubstrs($s1, $s2)
{
    $ans = 0;
 
    for ($i = 0; $i < strlen($s1); $i++)
    {
         
        // s3 stores all substrings of s1
        $s3 = "";
        for ($j = $i;
             $j < strlen($s1); $j++)
        {
            $s3 += $s1[$j];
 
            // check the presence of s3 in s2
            if (stripos($s2, $s3, 0) != -1)
                $ans++;
        }
    }
    return $ans;
}
 
// Driver code
$s1 = "aab";
$s2 = "aaaab";
echo countSubstrs($s1, $s2);
 
// This code is contributed
// by ChitraNayal
?>


Javascript




<script>
 
// javascript program to count number of
// substrings of s1 present in s2.
 
function countSubstrs( s1, s2)
{
var ans = 0;
 
for (var i = 0; i < s1.length; i++)
{
     
    // s3 stores all substrings of s1
    var s3 = "";
    var s4 = s1 ;
    for (var 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
 
    var s1 = "aab", s2 = "aaaab";
    document.write(countSubstrs(s1, s2));
 
</script>


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


Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads