给定两个由小写英文字母组成的字符串s1和s2 ,任务是对给定字符串的所有索引对(i,j)进行计数,以使s1 [i] = s2 [j]并且所有索引都不同,即s1 [i]与某些s2 [j]配对,则这两个字符将不会与任何其他字符配对。
例子
Input: s1 = “abcd”, s2 = “aad”
Output: 2
(s1[0], s2[0]) and (s1[3], s2[2]) are the only valid pairs.
(s1[0], s2[1]) is not includes because s1[0] has already been paired with s2[0]
Input: s1 = “geeksforgeeks”, s2 = “platformforgeeks”
Output: 8
方法:计算两个字符串中所有字符的频率。现在,对于每个字符,如果字符串s1中此字符的频率为freq1 ,而字符串s2中此字符的频率为freq2,则与此字符对应的总有效对将为min(freq1,freq2) 。所有字符的此值的总和是必需的答案。
下面是上述方法的实现:
C++
// C++ implementation of the approach
#include
using namespace std;
// Function to return the count of
// valid indices pairs
int countPairs(string s1, int n1, string s2, int n2)
{
// To store the frequencies of characters
// of string s1 and s2
int freq1[26] = { 0 };
int freq2[26] = { 0 };
// To store the count of valid pairs
int i, count = 0;
// Update the frequencies of
// the characters of string s1
for (i = 0; i < n1; i++)
freq1[s1[i] - 'a']++;
// Update the frequencies of
// the characters of string s2
for (i = 0; i < n2; i++)
freq2[s2[i] - 'a']++;
// Find the count of valid pairs
for (i = 0; i < 26; i++)
count += (min(freq1[i], freq2[i]));
return count;
}
// Driver code
int main()
{
string s1 = "geeksforgeeks", s2 = "platformforgeeks";
int n1 = s1.length(), n2 = s2.length();
cout << countPairs(s1, n1, s2, n2);
return 0;
}
Java
// Java implementation of the approach
import java.util.*;
class GFG
{
// Function to return the count of
// valid indices pairs
static int countPairs(String s1, int n1,
String s2, int n2)
{
// To store the frequencies of characters
// of string s1 and s2
int []freq1 = new int[26];
int []freq2 = new int[26];
Arrays.fill(freq1, 0);
Arrays.fill(freq2, 0);
// To store the count of valid pairs
int i, count = 0;
// Update the frequencies of
// the characters of string s1
for (i = 0; i < n1; i++)
freq1[s1.charAt(i) - 'a']++;
// Update the frequencies of
// the characters of string s2
for (i = 0; i < n2; i++)
freq2[s2.charAt(i) - 'a']++;
// Find the count of valid pairs
for (i = 0; i < 26; i++)
count += (Math.min(freq1[i], freq2[i]));
return count;
}
// Driver code
public static void main(String args[])
{
String s1 = "geeksforgeeks", s2 = "platformforgeeks";
int n1 = s1.length(), n2 = s2.length();
System.out.println(countPairs(s1, n1, s2, n2));
}
}
// This code is contributed by
// Surendra_Gangwar
Python3
# Python3 implementation of the approach
# Function to return the count of
# valid indices pairs
def countPairs(s1, n1, s2, n2) :
# To store the frequencies of characters
# of string s1 and s2
freq1 = [0] * 26;
freq2 = [0] * 26;
# To store the count of valid pairs
count = 0;
# Update the frequencies of
# the characters of string s1
for i in range(n1) :
freq1[ord(s1[i]) - ord('a')] += 1;
# Update the frequencies of
# the characters of string s2
for i in range(n2) :
freq2[ord(s2[i]) - ord('a')] += 1;
# Find the count of valid pairs
for i in range(26) :
count += min(freq1[i], freq2[i]);
return count;
# Driver code
if __name__ == "__main__" :
s1 = "geeksforgeeks";
s2 = "platformforgeeks";
n1 = len(s1) ;
n2 = len(s2);
print(countPairs(s1, n1, s2, n2));
# This code is contributed by Ryuga
C#
// C# implementation of the approach
using System;
class GFG
{
// Function to return the count of
// valid indices pairs
static int countPairs(string s1, int n1,
string s2, int n2)
{
// To store the frequencies of
// characters of string s1 and s2
int []freq1 = new int[26];
int []freq2 = new int[26];
Array.Fill(freq1, 0);
Array.Fill(freq2, 0);
// To store the count of valid pairs
int i, count = 0;
// Update the frequencies of
// the characters of string s1
for (i = 0; i < n1; i++)
freq1[s1[i] - 'a']++;
// Update the frequencies of
// the characters of string s2
for (i = 0; i < n2; i++)
freq2[s2[i] - 'a']++;
// Find the count of valid pairs
for (i = 0; i < 26; i++)
count += (Math.Min(freq1[i],
freq2[i]));
return count;
}
// Driver code
public static void Main()
{
string s1 = "geeksforgeeks",
s2 = "platformforgeeks";
int n1 = s1.Length, n2 = s2.Length;
Console.WriteLine(countPairs(s1, n1, s2, n2));
}
}
// This code is contributed by
// Akanksha Rai
输出:
8
如果您希望与行业专家一起参加现场课程,请参阅《 Geeks现场课程》和《 Geeks现场课程美国》。