给定两个分别为长度M和N的字符串S1和S2 ,任务是计算字符串字符频率的总和 S1的字符串S2英寸
例子:
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
天真的方法:最简单的方法是遍历字符串S1的每个字符,计算其在字符串S2中的频率。
时间复杂度: O(N 2 )
辅助空间: O(1)
高效的方法:可以通过使用哈希优化上述方法。请按照以下步骤解决问题:
- 初始化一个整数计数以存储所需的总和。
- 将字符串S1的所有字符插入Set中,例如bset 。
- 遍历字符串S2的字符,并检查集合bset中是否存在当前字符。如果发现为真,则将计数加一。
- 完成上述步骤后,打印count的值作为结果。
下面是上述方法的实现:
C++
// CPP program for the above approach
#include
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 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 bset = new HashSet();
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 bset = new HashSet();
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
输出:
7
时间复杂度: O(N)
辅助空间: O(N)