📌  相关文章
📜  计算两个字符串的常见字符

📅  最后修改于: 2021-04-26 07:22:39             🧑  作者: Mango

给定两个由小写英文字母组成的字符串s1s2 ,任务是对给定字符串的所有索引对(i,j)进行计数以使s1 [i] = s2 [j]并且所有索引都不同,即s1 [i]与某些s2 [j]配对,则这两个字符将不会与任何其他字符配对。

例子

方法:计算两个字符串中所有字符的频率。现在,对于每个字符,如果字符串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