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 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

i<strlen(i < strlen(i<strlen(s1); $i++) { // s3 stores all substrings of s1 $s3 = ""; for ($j = $i; j<strlen(j < strlen(j<strlen(s1); $j++) { s3+=s3 += 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

`

Complexity Analysis: