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. 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
Please Login to comment...