Pesquisar este blog

Livros Recomendados

quinta-feira, 20 de agosto de 2020

URI - 1255 - Frequência de Letras - Strings - C++

Plataforma: URI
Problema1255

Enunciado:
Neste problema estamos interessados na frequência das letras em uma dada linha de texto. 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).

Linguagem: C++

Solução:
Cada linha é percorrida e a cada caracter é verificado se é uma letra do alfabeto (em minúscula). Caso seja, é adicionado a um mapa. Ao final, o mapa é percorrido imprimindo as letras que possuem a quantidade de casos máximo. É importante notar que a estrutura map é sempre ordenada.


 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
35
36
37
38
39
#include <iostream>
#include <map>
 
using namespace std;
char toLower(char aux){
 if(aux >= 'A' and aux <= 'Z')
  return aux - 'A' + 'a';
 return aux;
} 

char isLetter(char aux){
 if(aux >= 'a' and aux <= 'z') return true;
 else return false;
}


int main() {
 std::map<char,int> mymap;
 std::map<char,int>::iterator it;

 string line;
 getline(cin, line);
 while(getline(cin, line)){
  mymap.clear();
  int max = 0;
  for(int i=0; i<line.length();i++){
   char letter = toLower(line[i]);
   if(isLetter(letter)){
    mymap[letter]++;
    if(mymap[letter] > max) max = mymap[letter];
   }
  }
  for (it=mymap.begin(); it!=mymap.end(); it++)
      if(it->second == max) cout << it->first;
     cout << endl;
    }
      
    return 0;
}

Nenhum comentário:

Postar um comentário

Postagem em destaque

URI (BEECROWD) - 2158 - Helping Uncle Cláudio (Ajudando o Tio Cláudio) - Matemática - C, C++ e Haskell

Buenas! Estou aqui mais uma vez para resolver um problema de Matemática! Agora tenho resolvido alguns dessa categoria, pra que vocês possam ...

Postagens mais visitadas