Dada una string str , la tarea es encontrar la frecuencia de cada palabra en una string.
Ejemplos:
Entrada: str = “Geeks For Geeks”
Salida:
For 1
Geeks 2
Explicación:
For ocurre 1 vez y Geeks ocurre 2 veces en la string dada str.Entrada: str = “aprender a codificar es aprender a crear e innovar”
Salida:
y 1
codificar 1
crear 1
innovar 1
es 1
aprender 2
a 2
Explicación:
Las palabras y, codificar, crear, innovar, ocurren 1 vez; y aprendizaje, to ocurre 2 veces en la string dada str.
Enfoque: Para resolver el problema mencionado anteriormente, debemos seguir los pasos que se detallan a continuación:
- Utilice una estructura de datos de mapa para almacenar la aparición de cada palabra en la string.
- Recorra toda la string y verifique si la palabra actual está presente en el mapa o no. Si está presente, actualice la frecuencia de la palabra actual; de lo contrario, inserte la palabra con frecuencia 1.
- Recorre el mapa e imprime la frecuencia de cada palabra.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program to calculate the frequency // of each word in the given string #include <bits/stdc++.h> using namespace std; // Function to print frequency of each word void printFrequency(string str) { map<string, int> M; // String for storing the words string word = ""; for (int i = 0; i < str.size(); i++) { // Check if current character // is blank space then it // means we have got one word if (str[i] == ' ') { // If the current word // is not found then insert // current word with frequency 1 if (M.find(word) == M.end()) { M.insert(make_pair(word, 1)); word = ""; } // update the frequency else { M[word]++; word = ""; } } else word += str[i]; } // Storing the last word of the string if (M.find(word) == M.end()) M.insert(make_pair(word, 1)); // Update the frequency else M[word]++; // Traverse the map // to print the frequency for (auto& it : M) { cout << it.first << " - " << it.second << endl; } } // Driver Code int main() { string str = "Geeks For Geeks"; printFrequency(str); return 0; }
Java
// Java implementation of the above // approach import java.util.Map; import java.util.TreeMap; public class Frequency_Of_String_Words { // Function to count frequency of // words in the given string static void count_freq(String str) { Map<String,Integer> mp=new TreeMap<>(); // Splitting to find the word String arr[]=str.split(" "); // Loop to iterate over the words for(int i=0;i<arr.length;i++) { // Condition to check if the // array element is present // the hash-map if(mp.containsKey(arr[i])) { mp.put(arr[i], mp.get(arr[i])+1); } else { mp.put(arr[i],1); } } // Loop to iterate over the // elements of the map for(Map.Entry<String,Integer> entry: mp.entrySet()) { System.out.println(entry.getKey()+ " - "+entry.getValue()); } } // Driver Code public static void main(String[] args) { String str = "Geeks For Geeks"; // Function Call count_freq(str); } }
Python3
# Python3 program to calculate the frequency # of each word in the given string # Function to print frequency of each word def printFrequency(strr): M = {} # string for storing the words word = "" for i in range(len(strr)): # Check if current character # is blank space then it # means we have got one word if (strr[i] == ' '): # If the current word # is not found then insert # current word with frequency 1 if (word not in M): M[word] = 1 word = "" # update the frequency else: M[word] += 1 word = "" else: word += strr[i] # Storing the last word of the string if (word not in M): M[word] = 1 # Update the frequency else: M[word] += 1 # Traverse the map # to print the frequency for it in M: print(it, "-", M[it]) # Driver Code strr = "Geeks For Geeks" printFrequency(strr) # This code is contributed by shubhamsingh10
C#
// C# implementation of the above // approach using System; using System.Collections.Generic; class GFG{ // Function to count frequency of // words in the given string static void count_freq(String str) { SortedDictionary<String, int> mp = new SortedDictionary<String, int>(); // Splitting to find the word String []arr = str.Split(' '); // Loop to iterate over the words for(int i = 0; i < arr.Length; i++) { // Condition to check if the // array element is present // the hash-map if (mp.ContainsKey(arr[i])) { mp[arr[i]] = mp[arr[i]] + 1; } else { mp.Add(arr[i], 1); } } // Loop to iterate over the // elements of the map foreach(KeyValuePair<String, int> entry in mp) { Console.WriteLine(entry.Key + " - " + entry.Value); } } // Driver Code public static void Main(String[] args) { String str = "Geeks For Geeks"; // Function call count_freq(str); } } // This code is contributed by Rajput-Ji
For - 1 Geeks - 2
Complejidad de tiempo: O(L * log (M)), donde L es la longitud de la string y M es el número de palabras presentes en la string.
Espacio auxiliar: O(M), donde M es el número de palabras presentes en la string.
Publicación traducida automáticamente
Artículo escrito por hrishikeshkonderu y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA