1255 - Frequência de Letras
Um problema tranquilo sobre contar letras e apenas letras de uma string.
Descrição
Solução
Você pode usar o código ASCII para te ajudar a mapear as frequências em apenas um vetor de 26 posições ou usar um dicionário para depois descobrir qual é o maior número e depois as letras que tem as maiores frequências.
Em C++, a estrutura de dados map
já coloca as chaves na ordem, por isso, não é necessário utilizar um vetor temporário só para ordenar a saída.
#include <string.h>
#include <stdio.h>
#include <ctype.h>
int main(){
int N;
char frase[201];
int maior, frequencias[26];
scanf("%d\n", &N);
for(int i = 0; i < N; ++i){
memset(frequencias, 0, sizeof(frequencias));
scanf("%[^\n]\n", &frase);
for(int j = 0; j < strlen(frase); ++j){
if(isalpha(frase[j])) frequencias[tolower(frase[j]) - 'a']++;
}
maior = 0;
for(int j = 0; j < 26; ++j){
if(maior < frequencias[j]) maior = frequencias[j];
}
for(int j = 0; j < 26; ++j){
if(frequencias[j] == maior) printf("%c", j + 'a');
}
printf("\n");
}
return 0;
}
Last updated
Was this helpful?