Given two strings S1 and S2 of lengths M and N respectively, the task is to calculate the sum of the frequencies of the characters of string S1 in the string S2.
Examples:
Input: S1 = “pPKf”, S2 = “KKKttsdppfP”
Output: 7
Explanation:
The character ‘p’ occurs twice in the string S2.
The character ‘P’ occurs once in the string S2.
The character ‘K’ occurs thrice in the string S2.
The character ‘f’ occurs once in the string S2.
Therefore, in total, characters of the string S1 occurs 7 times in the string S2.Input: S1 = “geEksFOR”, S2 = “GeEksforgeEKS”
Output: 7
Naive Approach: The simplest approach is to iterate over each character of the string S1, count its frequency in the string S2.
Time Complexity: O(N2)
Auxiliary Space: O(1)
Efficient Approach: The above approach can be optimized by using Hashing. Follow the steps below to solve the problem:
- Initialize an integer count to store the required sum.
- Insert all the characters of string S1 in a Set, say bset.
- Iterate over characters of the string S2 and check if the current character is present in the set, bset, or not. If found to be true, then increment count by one.
- After completing the above steps, print the value of count as the result.
Below is the implementation of the above approach:
C++
// C++ program for the above approach #include<bits/stdc++.h> using namespace std; // Function to find sum of frequencies // of characters of S1 present in S2 void countTotalFrequencies(string S1, string S2) { // Insert all characters of // string S1 in the set set< char > bset; for ( auto x:S1) bset.insert(x); int count = 0; // Traverse the string S2 for ( auto x: S2) { // Check if X is present // in bset or not if (bset.find(x) != bset.end()) // Increment count by 1 count += 1; } // Finally, print the count cout << count << endl; } // Driver Code int main() { // Given strings string S1 = "geEksFOR" ; string S2 = "GeEksforgeEKS" ; countTotalFrequencies(S1, S2); } // This code is contributed by ipg2016107. |
Java
// Java program for the above approach import java.util.HashSet; class GFG{ // Function to find sum of frequencies // of characters of S1 present in S2 static void countTotalFrequencies(String S1, String S2) { // Insert all characters of // string S1 in the set HashSet<Character> bset = new HashSet<Character>(); char [] S1arr = S1.toCharArray(); char [] S2arr = S2.toCharArray(); for ( char x : S1arr) bset.add(x); int count = 0 ; // Traverse the string S2 for ( char x : S2arr) { // Check if X is present // in bset or not if (bset.contains(x)) // Increment count by 1 count += 1 ; } // Finally, print the count System.out.print(count); } // Driver code public static void main(String[] args) { // Given strings String S1 = "geEksFOR" ; String S2 = "GeEksforgeEKS" ; countTotalFrequencies(S1, S2); } } // This code is contributed by abhinavjain194 |
Python3
# Python3 program for the above approach # Function to find sum of frequencies # of characters of S1 present in S2 def countTotalFrequencies(S1, S2): # Insert all characters of # string S1 in the set bset = set (S1) count = 0 # Traverse the string S2 for x in S2: # Check if X is present # in bset or not if x in bset: # Increment count by 1 count + = 1 # Finally, print the count print (count) # Driver Code # Given strings S1 = "geEksFOR" S2 = "GeEksforgeEKS" countTotalFrequencies(S1, S2) |
C#
// C# program for the above approach using System; using System.Collections.Generic; class GFG { // Function to find sum of frequencies // of characters of S1 present in S2 static void countTotalFrequencies( string S1, string S2) { // Insert all characters of // string S1 in the set HashSet< char > bset = new HashSet< char >(); foreach ( char x in S1) bset.Add(x); int count = 0; // Traverse the string S2 foreach ( char x in S2) { // Check if X is present // in bset or not if (bset.Contains(x)) // Increment count by 1 count += 1; } // Finally, print the count Console.Write(count); } // Driver code static void Main() { // Given strings string S1 = "geEksFOR" ; string S2 = "GeEksforgeEKS" ; countTotalFrequencies(S1, S2); } } // This code is contributed by abhinavjain194 |
Javascript
<script> // Javascript program for the above approach // Function to find sum of frequencies // of characters of S1 present in S2 function countTotalFrequencies(S1, S2) { // Insert all characters of // string S1 in the set var bset = new Set(); for ( var i = 0; i < S1.length; i++) { bset.add(S1[i]); } var count = 0; // Traverse the string S2 for ( var i = 0; i < S2.length; i++) { // Check if X is present // in bset or not if (bset.has(S2[i])) // Increment count by 1 count += 1; } // Finally, print the count document.write(count); } // Driver Code // Given strings var S1 = "geEksFOR" ; var S2 = "GeEksforgeEKS" ; countTotalFrequencies(S1, S2); // This code is contributed by rutvik_56 </script> |
7
Time Complexity: O(N)
Auxiliary Space: O(N)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!