In this tutorial am going to solve the HackerRank digit frequency problem in c programming with practical program code example and step-by-step explanation. in this problem we need to take a string as an input value. this string consist of alphabets and digits and we need to fine the frequency of each digit in the string and need to print the first ten digits on the output screen with their frequency.
Solution in c programming
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int* nums = (int*) malloc(10 * sizeof(int));
char c;
for(int i = 0; i < 10; i++)
*(nums+i) = 0;
while(scanf("%c", &c) == 1)
if(c >= '0' && c <= '9')
(*(nums+(c-'0')))++;
for(int i = 0; i < 10; i++)
printf("%d ", *(nums+i));
return EXIT_SUCCESS;
}
Second solution
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char *s;
s = malloc(1024 * sizeof(char));
scanf("%s", s);
s = realloc(s, strlen(s) + 1);
int len = strlen(s), i;
int arr[10];
for(i = 0; i < 10; i++)
arr[i] = 0;
for(i = 0; i < len; i++) {
if(s[i] >= '0' && s[i] <= '9') {
arr[(int)(s[i] - '0')]++;
}
}
for(i = 0; i < 10; i++)
printf("%d ", arr[i]);
printf("\n");
free(s);
return 0;
}