Programa C para encontrar la frecuencia de caracteres en una string

Dada una string S que contiene caracteres ingleses en minúsculas, la tarea es encontrar la frecuencia de todos los caracteres en la string .

Ejemplos:

Entrada: S=”geeksforgeeks”
Salida:
e – 4
f – 1
g – 2
k – 2
o – 1
r – 1
s – 2

Entrada : S=”gfg”
Salida:
f – 1
g – 2

Enfoque: Siga los pasos para resolver el problema:

  1. Inicialice una array freq[] para almacenar la frecuencia de cada alfabeto en la string dada . El índice 0 almacena la frecuencia del carácter ‘ a’ , el índice 1 st/sup> almacena la frecuencia del carácter ‘b’ y así sucesivamente.
  2. Itere sobre la string S dada e incremente la frecuencia de cada carácter encontrado en 1 , realizando freq[S[i] – ‘a’] += 1 . Si S[i] = ‘a’ , entonces S[i] – ‘a’ es igual a 0, por lo que la frecuencia de ‘a’ se incrementa en el arreglo.=
  3. Después de completar el recorrido de la string, imprima la frecuencia de todos los caracteres de la string recorriendo la array freq[] .

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

C

// C program for the above approach
#include <stdio.h>
#include <string.h>
  
// Function to print the frequencies
// of each character of the string
void printFrequency(int freq[])
{
    for (int i = 0; i < 26; i++) {
  
        // If frequency of the
        // alphabet is non-zero
        if (freq[i] != 0) {
  
            // Print the character and
            // its respective frequency
            printf("%c - %d\n",
                   i + 'a', freq[i]);
        }
    }
}
  
// Function to calculate the frequencies
// of each character of the string
void findFrequncy(char S[])
{
    int i = 0;
  
    // Stores the frequencies
    // of each character
    int freq[26] = { 0 };
  
    // Traverse over the string
    while (S[i] != '\0') {
  
        // Increment the count of
        // each character by 1
        freq[S[i] - 'a']++;
  
        // Increment the index
        i++;
    }
  
    // Function call to print
    // the frequencies
    printFrequency(freq);
}
  
// Driver Code
int main()
{
    char S[100] = "geeksforgeeks";
    findFrequncy(S);
}
Producción:

e - 4
f - 1
g - 2
k - 2
o - 1
r - 1
s - 2

Complejidad temporal: O(N)
Espacio auxiliar: O(26)

Publicación traducida automáticamente

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