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:
- Iterar sobre los caracteres de la string arr[i] usando la variable j y en cada iteración empujar el par {i+1, j+1} en el vector mp[arr[i][j]].
- 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>
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