Contar pares de strings que satisfagan las condiciones dadas

Dada una array arr[] de N strings que consisten en caracteres en minúsculas, la tarea es contar los pares en la array que satisfacen las condiciones dadas:

  1. Ambas strings tienen el mismo número de pares.
  2. Las primeras vocales de ambas strings son iguales.
  3. La última vocal de ambas strings es la misma.

Tenga en cuenta que una string solo se puede usar en un solo par.

Ejemplos:

Entrada: arr[] = {“geeks”, “for”, “geeks”, “geek”}
Salida: 1
El único par válido es (“geeks”, “geeks”).
«geek» también podría emparejarse con «geeks», pero
ambos «geeks» ya se han emparejado.

Entrada: arr[] = {“código”, “disparar”, “modo”}
Salida: 1

Enfoque: almacenaremos todas las vocales que aparecen en una palabra para cada palabra y haremos una tupla de la primera vocal, la última vocal y el recuento total de vocales y almacenaremos el índice correspondiente con respecto a esa tupla usando el mapa. Por último, revisaremos el mapa y contaremos el número de pares que se pueden formar utilizando los valores de tupla almacenados en el mapa.

A continuación se muestra la implementación del enfoque anterior:

C++

// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
  
// Function that returns true if c is vowel
bool is_vowel(char c)
{
    return (c == 'a' || c == 'e' || c == 'i'
            || c == 'o' || c == 'u');
}
  
// Function to return the count of required pairs
int count(string s[], int n)
{
  
    map<tuple<char, char, int>, vector<int> > map;
  
    // For every string of the array
    for (int i = 0; i < n; i++) {
  
        // Vector to store the vowels
        // of the current string
        vector<char> vowel;
        for (int j = 0; j < s[i].size(); j++) {
  
            // If current character is a vowel
            if (is_vowel(s[i][j]))
                vowel.push_back(s[i][j]);
        }
  
        // If current string contains vowels
        if (vowel.size() > 0) {
            int len = vowel.size();
  
            // Create tuple (first vowel,
            // last vowel, total vowels)
            map[make_tuple(vowel[0],
                           vowel[len - 1], len)]
                .push_back(i);
        }
    }
  
    int count = 0;
    for (auto i : map) {
  
        // v stores the indices for which
        // the given condition satisfies
        // Total valid pairs will be half the size
        vector<int> v = i.second;
        count += v.size() / 2;
    }
  
    return count;
}
  
// Driver code
int main()
{
    string s[] = { "geeks", "for", "geeks" };
    int n = sizeof(s) / sizeof(string);
  
    cout << count(s, n);
  
    return 0;
}

Python3

# Python3 implementation of the approach
  
# Function that returns true if c is vowel
def is_vowel(c):
    return (c == 'a' or c == 'e' or c == 'i'
            or c == 'o' or c == 'u')
  
  
# Function to return the count of required pairs
def count(s, n):
  
  
    map=dict()
  
    # For every of the array
    for i in range(n):
  
        # Vector to store the vowels
        # of the current string
        vowel=[]
        for j in range(len(s[i])):
  
            # If current character is a vowel
            if (is_vowel(s[i][j])):
                vowel.append(s[i][j])
      
  
        # If current contains vowels
        if (len(vowel) > 0):
            Len = len(vowel)
  
            # Create tuple (first vowel,
            # last vowel, total vowels)
            if (vowel[0],vowel[Len - 1], Len) in map.keys():
                map[(vowel[0],vowel[Len - 1], Len)].append(i)
            else:
                map[(vowel[0],vowel[Len - 1], Len)]=[i,]
          
  
    count = 0
    for i in map:
  
        # v stores the indices for which
        # the given condition satisfies
        # Total valid pairs will be half the size
        v = map[i]
        count += len(v)// 2
      
  
    return count
  
# Driver code
s = ["geeks", "for", "geeks"]
n = len(s)
  
print(count(s, n))
  
# This code is contributed by mohit kumar 29
Producción:

1

Publicación traducida automáticamente

Artículo escrito por souradeep 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 *