Compruebe si el carácter que aparece máximo de una string aparece igual no. de veces en otros

Dadas dos strings, debemos tomar el carácter que tiene la mayor cantidad de ocurrencias en la primera string, y luego debemos verificar si ese carácter en particular está presente en la segunda string la misma cantidad de veces que está presente en la primera string.
Ejemplos: 
 

Input : s1 = "sssgeek", s2 = "geeksss"
Output : Yes
Max occurring character in s1 is
's'. It occurs same number of times
in s2.

Input :  geekyarticle
         gfggfggfg
Output : No

Almacene recuentos de caracteres en la primera string y busque el recuento máximo. Ahora recorra la segunda string y verifique si el carácter máximo que aparece ocurre la misma cantidad de veces o no.
Debajo del programa para ilustrar el problema anterior
 

C++

// C++ program to check the problem
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ASCIISIZE 256
 
int match(string s1, string s2)
{
    // Create array to keep the count of individual
    // characters and initialize the array as 0
    int count[ASCIISIZE] = { 0 };
 
    // Construct character count array from the input
    // string.
    for (int i = 0; i < s1.length(); i++)
        count[s1[i]]++;
 
    // Count occurrences of maximum occurring character
    int mx_cnt = 0, mx_chr;
    for (int i = 0; i < ASCIISIZE; i++) {
        if (count[i] > mx_cnt) {
            mx_cnt = count[i];
            mx_chr = i;
        }
    }
 
    // look if that character is present, the same
    // number of times it is present in second string
    for (int i = 0; i < s2.length(); i++)
        if (mx_chr == s2[i])
            mx_cnt--;
     
    // check if sum is greater or equal to number
    // return 1
    if (mx_cnt == 0)
        return 1;
}
 
// Driver program to test the above function
int main()
{
    string s1 = "geekforgeeks", s2 = "geekisgeeky";
    if (match(s1, s2))
        cout << "Yes ";
    else
        cout << "No";
 
    return 0;
}

Java

// Java program to check the problem
class GFG
{
static int ASCIISIZE = 256;
static int match(String s1,    
                 String s2)
{
// Create array to keep the
// count of individual characters
// and initialize the array as 0
int count[] = new int[ASCIISIZE];
 
// Construct character count
// array from the input string.
char []s3 = s1.toCharArray();
for (int i = 0; i < s3.length; i++)
    count[s3[i]]++;
 
// Count occurrences of
// maximum occurring character
int mx_cnt = 0;
int mx_chr = 0;
for (int i = 0; i < ASCIISIZE; i++)
{
    if (count[i] > mx_cnt)
    {
        mx_cnt = count[i];
        mx_chr = i;
    }
}
 
// look if that character is
// present, the same number
// of times it is present in
// second string
char []s4 = s2.toCharArray();
for (int i = 0; i < s4.length; i++)
    if (mx_chr == s4[i])
        mx_cnt--;
 
// check if sum is greater or
// equal to number return 1
if (mx_cnt == 0)
    return 1;
else
    return 0;
}
 
// Driver Code
public static void main(String[] args)
{
    String s1 = "geekforgeeks",
           s2 = "geekisgeeky";
    int p = match(s1, s2);
    if (p == 1)
        System.out.println("Yes ");
    else
        System.out.println("No");
}
}
 
// This code is contributed
// by ChitraNayal

Python3

# Python3 program to
# check the problem
 
# define function for Check
# if max occurring character
# of one string appears same
# no. of times in other
def match(s1, s2) :
 
    # declare empty list
    count_list = []
 
    # iterate through each
    # character of the string
    for char in s1 :
         
        # find occurrence of
        # the character
        count = s1.count(char)
         
        # append tuple value
        # to the list
        count_list.append((count,char))
 
    # return tuple of max count
    max_occ = max(count_list)
 
    # store max count in mx_cnt
    mx_cnt = max_occ[0]
 
    # store max count
    # character in mx_chr
    mx_chr = max_occ[1]
 
    # look if max count character
    # is present in s1, the same
    # number of times it is present
    # in second string s2 or not
    # if present return True
    # otherwise False.
    if mx_cnt == s2.count(mx_chr) :
        return True
    else :
        return False
 
# Driver Code
if __name__ == "__main__" :
     
    s1 = "geeksforgeeks"
    s2 = "geekisgeeky"
 
    if match(s1,s2) :
        print("Yes")
    else :
        print("No")
         
# This code is contributed
# by Ankit Rai

C#

// C# program to check the problem
using System;
 
class GFG
{
static int ASCIISIZE = 256;
static int match(String s1,
                 String s2)
{
// Create array to keep the
// count of individual characters
// and initialize the array as 0
int []count = new int[ASCIISIZE];
 
// Construct character count                                    
// array from the input string.
for (int i = 0; i < s1.Length; i++)
    count[s1[i]]++;
 
// Count occurrences of
// maximum occurring character
int mx_cnt = 0;
int mx_chr = 0;
for (int i = 0; i < ASCIISIZE; i++)
{
    if (count[i] > mx_cnt)
    {
        mx_cnt = count[i];
        mx_chr = i;
    }
}
 
// look if that character is
// present, the same number
// of times it is present
// in second string
for (int i = 0; i < s2.Length; i++)
    if (mx_chr == s2[i])
        mx_cnt--;
 
// check if sum is greater
// or equal to number return 1
if (mx_cnt == 0)
    return 1;
else
    return 0;
}
 
// Driver Code
public static void Main()
{
    String s1 = "geekforgeeks",
           s2 = "geekisgeeky";
    int p = match(s1, s2);
    if (p == 1)
        Console.Write("Yes ");
    else
        Console.Write("No");
}
}
 
// This code is contributed
// by ChitraNayal

Javascript

<script>
 
// Javascript program to check the problem
     
    let ASCIISIZE = 256;
function match(s1,s2)
{
    // Create array to keep the
// count of individual characters
// and initialize the array as 0
let count = new Array(ASCIISIZE);
for(let i=0;i<ASCIISIZE;i++)
{
    count[i]=0;
}
// Construct character count
// array from the input string.
let s3 = s1.split("");
for (let i = 0; i < s3.length; i++)
    count[s3[i]]++;
   
// Count occurrences of
// maximum occurring character
let mx_cnt = 0;
let mx_chr = 0;
for (let i = 0; i < ASCIISIZE; i++)
{
    if (count[i] > mx_cnt)
    {
        mx_cnt = count[i];
        mx_chr = i;
    }
}
   
// look if that character is
// present, the same number
// of times it is present in
// second string
let s4 = s2.split("");
for (let i = 0; i < s4.length; i++)
    if (mx_chr == s4[i])
        mx_cnt--;
   
// check if sum is greater or
// equal to number return 1
if (mx_cnt == 0)
    return 1;
else
    return 0;
}
 
// Driver Code
let s1 = "geekforgeeks",
           s2 = "geekisgeeky";
let p = match(s1, s2);
if (p == 1)
    document.write("Yes ");
else
    document.write("No");
     
     
// This code is contributed by avanitrachhadiya2155
 
</script>
Producción: 

Yes

 

Complejidad de tiempo: O(m + n), donde m es el tamaño de la string s1 y n es el tamaño de la string s2. 

Espacio auxiliar: O(256), no se requiere espacio adicional, por lo que es una constante.

Publicación traducida automáticamente

Artículo escrito por AmanSrivastava1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *