Dada una string, la tarea es imprimir todas las substrings distintas de longitud dos en la string dada. Todas las substrings deben imprimirse en orden lexicográfico.
Ejemplos:
Input: str = "abcab" Output: ab-2 bc-1 ca-1 Input: str = "xyz" Output: xy-1 yz-1
La idea de este artículo es demostrar el mapa y el par en C++ STL.
Declaramos un mapa d_pairs que usa una clave de par de caracteres y cuenta como valor. Iteramos sobre la string dada desde el índice de inicio para almacenar cada par consecutivo si aún no está presente e incrementamos su conteo en el mapa. Después de completar el bucle, obtenemos todos los pares consecutivos distintos y su correspondiente recuento de ocurrencias en el contenedor del mapa.
Tenga en cuenta que el mapa se usa porque necesitamos la salida en orden. Podríamos usar unordered_map() si la salida no fuera necesaria en orden ordenado. La complejidad temporal de las operaciones underdered_map() es O(1) mientras que la del mapa es O(Log n)
CPP
// C++ STL based program to print all distinct // substrings of size 2 and their counts. #include<bits/stdc++.h> using namespace std; void printDistinctSubStrs(string str) { // Create a map to store unique substrings of // size 2 map<pair<char,char>, int> dPairs; // Count occurrences of all pairs for (int i=0; i<str.size()-1; i++) dPairs[make_pair(str[i], str[i+1])]++; // Traverse map to print sub-strings and their // counts. cout << "Distinct sub-strings with counts:\n"; for (auto it=dPairs.begin(); it!=dPairs.end(); it++) cout << it->first.first << it->first.second << "-" << it->second << " "; } // Driver code int main() { string str = "abcacdcacabacaassddssklac"; printDistinctSubStrs(str); return 0; }
Producción:
Distinct sub-strings with counts: aa-1 ab-2 ac-4 as-1 ba-1 bc-1 ca-4 cd-1 dc-1 dd-1 ds-1 kl-1 la-1 sd-1 sk-1 ss-2
Este artículo es una contribución de Himanshu Gupta (Bagri) . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA