Selama wawancara untuk posisi pengembang Java, saya ditanya hal berikut:
Tulis fungsi yang membutuhkan dua params:
- String yang mewakili dokumen teks dan
- bilangan bulat yang menyediakan jumlah item untuk dikembalikan.
Menerapkan fungsi sedemikian rupa sehingga mengembalikan daftar String yang dipesan berdasarkan frekuensi kata, kata yang paling sering muncul terlebih dahulu. Solusi Anda harus dijalankan dalam waktu di mana adalah jumlah karakter dalam dokumen.n
Berikut ini adalah apa yang saya jawab (dalam pseudocode), ini bukan melainkan waktu karena jenisnya. Saya tidak tahu bagaimana melakukannya waktu. 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
Apakah ada yang tahu atau ada yang bisa memberi saya petunjuk?
Hashtable
Java warisan atau tidak benar-benar tidak relevan untuk tujuan situs ini.