Trong một cuộc phỏng vấn cho vị trí nhà phát triển Java, tôi đã được hỏi như sau:
Viết hàm có hai tham số:
- Chuỗi đại diện cho một tài liệu văn bản và
- một số nguyên cung cấp số lượng các mặt hàng để trả lại.
Thực hiện chức năng sao cho nó trả về một danh sách các Chuỗi được sắp xếp theo tần số từ, từ xuất hiện thường xuyên nhất trước tiên. Giải pháp của bạn sẽ chạy trong thời gian trong đó là số lượng ký tự trong tài liệu.n
Sau đây là những gì tôi đã trả lời (bằng mã giả), đó không phải là thời gian mà là vì sắp xếp. Tôi không thể tìm ra làm thế nào để làm điều đó thời gian. 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
Có ai biết hoặc ai đó có thể cho tôi một số gợi ý?
Hashtable
Java có hợp pháp hay không thực sự không liên quan cho mục đích của trang web này.