Durante un'intervista per una posizione di sviluppatore Java, mi è stato chiesto quanto segue:
Scrivi una funzione che accetta due parametri:
- una stringa che rappresenta un documento di testo e
- un numero intero che fornisce il numero di articoli da restituire.
Implementare la funzione in modo tale da restituire un elenco di stringhe ordinate per frequenza delle parole, la parola che si verifica più frequentemente per prima. La soluzione dovrebbe essere eseguita nel tempo cui è il numero di caratteri nel documento.n
Quello che segue è quello che ho risposto (in pseudocodice), non è ma piuttosto tempo a causa del tipo. Non riesco a capire come farlo volta. O ( n log n ) O ( n )
wordFrequencyMap = new HashMap<String, Integer>();
words = inputString.split(' ');
for (String word : words) {
count = wordFrequencyMap.get(word);
count = (count == null) ? 1 : ++count;
wordFrequencyMap.put(word, count);
}
return wordFrequencyMap.sortByValue.keys
Qualcuno sa o qualcuno può darmi qualche suggerimento?
Hashtable
Java legacy o meno è davvero irrilevante ai fini di questo sito.