You get N
words, your goal is to find the k
most frequent words.
The program gets text in input, line by line. To read the input you can either (your choice) :
- read from the standard input
STDIN
(if your language allows it), or - use a pseudo-function
readline()
you assume will return the next line, or an empty string when it reaches the end of file, or - takes a list / array of lines
First line gets the number N
of words to read.
The next N
lines each contains one word.
The last line contains the number k
of most frequent words to return.
Print the k
most frequent words by decreasing frequency (by decreasing number of occurrences).
If two words have the same frequency, order them in lexicographical order. optional, bonus.
Input:
14
Fee
Fi
Fo
Fum
Fee
Fo
Fee
Fee
Fo
Fi
Fi
Fo
Fum
Fee
3
Output:
Fee
Fo
Fi
You can assume that input is limited to 100k words 0 < N < 100000
and that each word has less than 20 characters 0 < len(word) < 20
.
Tu as N
mots, le but est de trouver les k
mots les plus fréquents.
Le programme prend du texte en entrée, ligne par ligne. Pour lire l'entrée tu peux soit (au choix) :
- lire depuis l'entrée standard
STDIN
(selon le language choisi), ou - utiliser une fonction imaginaire
readline()
qui retourne la ligne suivante ou une chaine vide pour marquer la fin, ou - prendre en entrée une liste / array de lignes
La première ligne contient le nombre N
de mots à lire.
Les N
lignes suivantes contiennent chacune un mot.
La dernière ligne contient le nombre k
des mots les plus fréquents à chercher.
Affiche les k
mots les plus fréquents par ordre descendant de fréquence (nombre d'occurences). Si deux mots ont la même fréquence, les ordonner par ordre alphabétique optionnel.
Entrée :
14
Fee
Fi
Fo
Fum
Fee
Fo
Fee
Fee
Fo
Fi
Fi
Fo
Fum
Fee
3
Sortie :
Fee
Fo
Fi
Tu peux considérer que l'entrée est limitée à 100,000 mots 0 < N < 100000
et que la longueur de chaque mot est limitée à 20 charactères 0 < len(word) < 20
.