URI Online Judge | 1255
Frequência de Letras
Por Sumudu Fernando
Canadá
Timelimit: 1

Especificamente, deseja-se saber qual(is) a(s) letra(s) de maior frequência do texto, ignorando o “case sensitive”, ou seja maiúsculas ou minúsculas (sendo mais claro, “letras” referem-se precisamente às 26 letras do alfabeto).
Entrada
A entrada contém vários casos de teste. A primeira linha contém um inteiro N que indica a quantidade de casos de teste. Cada caso de teste consiste de uma única linha de texto. A linha pode conter caracteres “não letras”, mas é garantido que tenha ao menos uma letra e que tenha no máximo 200 caracteres no total.
Saída
Para cada caso de teste, imprima uma linha contendo a(s) letra(s) que mais ocorreu(ocorreram) no texto em minúsculas (se houver empate, imprima as letras em ordem alfabética).
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main()
{
int N, i, j, maxFrequency, frequencies[26];
char charCode, line[202], result[26], *ptr;
scanf("%d", &N);
getchar();
for (; N > 0; --N) {
fgets(line, 202, stdin);
memset(frequencies, 0, sizeof(frequencies));
maxFrequency = -1;
ptr = line;
while (*ptr != '\n') {
if (isalpha(*ptr)) {
charCode = tolower(*ptr) - 'a';
++frequencies[charCode];
if (frequencies[charCode] > maxFrequency)
maxFrequency = frequencies[charCode];
}
++ptr;
}
for (i = 0, j = 0; i < 26; ++i) {
if (frequencies[i] == maxFrequency)
result[j++] = i + 'a';
}
result[j] = '\0';
puts(result);
}
return 0;
}
0 Comentários