blob: 508c83e20847f41c013f4ec5445c9b396ecc7a1e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
#include <stdio.h>
#include <stdlib.h>
int compare(const void *a, const void *b)
{
int i1 = *(int*)a;
int i2 = *(int*)b;
return i2 - i1;
}
int frequency_equalizer(const char *str)
{
int freq[26] = {0}, *arr = NULL, res = 0, j = 0;
size_t count = 0;
for(int i = 0; str[i] != '\0'; ++i) freq[str[i] - 'a']++;
for(int i = 0; i < 26; ++i) if(freq[i] != 0) count++;
arr = malloc(count * sizeof(int));
for(int i = 0; i < 26; ++i) if(freq[i] != 0) arr[j++] = freq[i];
qsort(arr, count, sizeof(int),compare);
res = (arr[0] == arr[1]+1) && (arr[count-1] == arr[1]) ? 1 : 0;
if(arr){
free(arr);
arr = NULL;
}
return res;
}
int main(void)
{
printf("%d\n", frequency_equalizer("abbc"));
printf("%d\n", frequency_equalizer("xyzyyxz"));
printf("%d\n", frequency_equalizer("xzxz"));
return 0;
}
|