Encuentre la frecuencia de cada carácter con posiciones en una array de strings dada

Dada una array , arr[] que consta de N strings donde cada carácter de la string es un alfabeto inglés en minúsculas, la tarea es almacenar e imprimir la ocurrencia de cada carácter distinto en cada string.

Ejemplos: 

Entrada: arr[] = { “geeksforgeeks”, “gfg” }
Salida: Apariciones de: e = [1 2] [1 3] [1 10] [1 11] 
              Apariciones de: f = [1 6] [2 2 ] 
              Ocurrencias de: g = [1 1] [1 9] [2 1] [2 3] 
              Ocurrencias de: k = [1 4] [1 12] 
              Ocurrencias de: o = [1 7] 
              Ocurrencias de: r = [ 1 8] 
              Ocurrencias de: s = [1 5] [1 13]

Entrada: arr[] = { “abc”, “ab” }
Salida: Ocurrencias de: a = [1 1] [2 1] 
              Ocurrencias de: b = [1 2] [2 2] 
              Ocurrencias de: c = [1 3] 
 

Enfoque: el problema anterior se puede resolver utilizando estructuras de datos de mapas y vectores . Siga los pasos a continuación para resolver el problema:

  • Inicialice un map<char, vector<pair<int, int>> > say mp para almacenar las ocurrencias de un carácter en el vector de pares, donde cada par almacena el índice de la string en la array como el primer elemento y la posición de el carácter de la string como segundo elemento.
  • Recorra el vector arr usando una variable i y realice el siguiente paso:
  • Finalmente, después de completar los pasos anteriores, imprima las ocurrencias de cada carácter iterando sobre el mapa mp .

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

C++

// C++ program for the above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to print every occurrence
// of every characters in every string
void printOccurrences(vector<string> arr, int N)
{
    map<char, vector<pair<int, int> > > mp;
 
    // Iterate over the vector arr[]
    for (int i = 0; i < N; i++) {
        // Traverse the string arr[i]
        for (int j = 0; j < arr[i].length(); j++) {
 
            // Push the pair of{i+1, j+1}
            // in mp[arr[i][j]]
            mp[arr[i][j]].push_back(
                make_pair(i + 1, j + 1));
        }
    }
    // Print the occurrences of every
    // character
    for (auto it : mp) {
        cout << "Occurrences of: " << it.first << " = ";
        for (int j = 0; j < (it.second).size(); j++) {
            cout << "[" << (it.second)[j].first << " "
                 << (it.second)[j].second << "] ";
        }
        cout << endl;
    }
}
 
// Driver Code
int main()
{
    // Input
    vector<string> arr = { "geeksforgeeks", "gfg" };
    int N = arr.size();
    // Function call
    printOccurrences(arr, N);
}

Python3

# Python3 program for the above approach
 
# Function to print every occurrence
# of every characters in every string
def printOccurrences(arr, N):
     
    mp = [[] for i in range(26)]
 
    # Iterate over the vector arr[]
    for i in range(N):
         
        # Traverse the string arr[i]
        for j in range(len(arr[i])):
             
            # Push the pair of{i+1, j+1}
            # in mp[arr[i][j]]
            mp[ord(arr[i][j]) - ord('a')].append(
                           (i + 1, j + 1))
             
    # print(mp)
 
    # Print the occurrences of every
    # character
    for i in range(26):
        if len(mp[i]) == 0:
            continue
         
        print("Occurrences of:", chr(i +
              ord('a')), "=", end = " ")
        for j in mp[i]:
            print("[" + str(j[0]) + " " +
                        str(j[1]) + "] ", end = "")
        print()
 
# Driver Code
if __name__ == '__main__':
     
    # Input
    arr= [ "geeksforgeeks", "gfg" ]
    N  = len(arr)
     
    # Function call
    printOccurrences(arr, N)
 
# This code is contributed by mohit kumar 29

Javascript

<script>
 
// JavaScript program for the above approach
 
// Function to print every occurrence
// of every characters in every string
function printOccurrences(arr, N) {
  let mp = new Map();
 
  // Iterate over the vector arr[]
  for (let i = 0; i < N; i++) {
    // Traverse the string arr[i]
    for (let j = 0; j < arr[i].length; j++) {
      // Push the pair of{i+1, j+1}
      // in mp[arr[i][j]]
      if (mp.has(arr[i][j])) {
        let temp = mp.get(arr[i][j]);
        temp.push([i + 1, j + 1]);
 
        mp.set(arr[i][j], temp);
      } else {
        mp.set(arr[i][j], [[i + 1, j + 1]]);
      }
    }
  }
  // Print the occurrences of every
  // character
  for (let it of new Map([...mp.entries()].sort())) {
    document.write("Occurrences of: " + it[0] + " = ");
    for (let j = 0; j < it[1].length; j++) {
      document.write(" [" + it[1][j][0] + " " + it[1][j][1] + "] ");
    }
    document.write("<br>");
  }
}
 
// Driver Code
 
// Input
let arr = ["geeksforgeeks", "gfg"];
let N = arr.length;
// Function call
printOccurrences(arr, N);
 
</script>
Producción

Occurrences of: e = [1 2] [1 3] [1 10] [1 11] 
Occurrences of: f = [1 6] [2 2] 
Occurrences of: g = [1 1] [1 9] [2 1] [2 3] 
Occurrences of: k = [1 4] [1 12] 
Occurrences of: o = [1 7] 
Occurrences of: r = [1 8] 
Occurrences of: s = [1 5] [1 13] 

Complejidad de tiempo: O(N*M), donde M es la longitud de la string más larga.
Espacio auxiliar: O(N*M)

Publicación traducida automáticamente

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