Cel mai frecvent cuvânt din text
Identifică cuvântul care apare de cele mai multe ori în text.
Date de intrare
Vei citi de la tastatură textul emailului. Acesta poate să se întindă pe mai multe linii și conține doar litere mici și mari ale alfabetului englez și spații.
Date de ieșire
Se va afișa cuvântul care apare de cele mai multe ori în textul emailului.
Restricții și precizări
Textul nu conține mai mult de 100 000 de cuvinte, iar fiecare cuvânt poate conține până la 20 de caractere. Dacă există mai multe cuvinte care apar de mai multe ori, se va afișa cel care e minim lexicografic.
Clasa care conține metoda main trebuie să fie publică și să se numească prog.
Exemplu
Date de intrare
mersi pentru lista de instructiuni
e de ajutor
mersi
Date de ieșire
de
o idee de rezolvare In limbajul java va rog
Răspunsuri la întrebare
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Map;
import java.util.SortedMap;
import java.util.TreeMap;
public class prog {
public static void main(String[] args) throws Exception {
//Creaza BufferedReader pentru intrare standard
InputStreamReader inputStreamReader = new InputStreamReader(System.in);
BufferedReader reader = new BufferedReader(inputStreamReader);
//Folosim un sorted map pentru a retine perechi de tipul (cheie=sir caractere, valoare = int) unde cheia e cuvantul si valoarea e numarul de aparitii
SortedMap<String, Integer> smp = new TreeMap<>();
//Cat timp avem linii de citit, citeste linia
String linie_curenta = reader.readLine();
while(linie_curenta != null){
//Separa linia in array de cuvinte
String[] arr = linie_curenta.split(" ");
//Mareste numarul de aparitii pentru fiecare cuvant gasit
for (String cuv: arr) {
//Daca e sir gol sari peste
if(cuv.length()==0) continue;
Integer val_anterioara = smp.get(cuv);
if(val_anterioara==null)
val_anterioara=0;
smp.put(cuv, val_anterioara + 1);
}
linie_curenta = reader.readLine();
}
//Cauta si afiseaza cuvant cu numar maxim de aparitii
String cuv_maxim = "";
int nr_aparitii = 0;
for (Map.Entry mapElement : smp.entrySet()) {
int value = (int)mapElement.getValue();
if(value>nr_aparitii){
cuv_maxim = (String)mapElement.getKey();
nr_aparitii = value;
}
}
//Afiseaza rezultat
System.out.println(cuv_maxim);
}
}
► Explicatie :
Folosim SortedMap pentru a retine perechi de tipul (cheie, valoare) unde
- cheie = cuvantul
- valoare = numarul de aparitii a cuvantului respectiv
Incrementam de fiecare data numarul de aparitii al cuvantului.
La final luam la rand toate elementele si determinam cuvantul care are numarul maxim de aparitii care apare primul in SortedMap. Fiind o structura sortata unde cheia este String cheile vor aparea in ordine lexicogramaticala. Din acest motiv il luam pe primul element.
Iti sugerez sa cauti pe internet informatii cu privire la SortedMap si la functiile folosite pentru a intelege mai bine cum functioneaza programul