-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProblem7_AutocompleteSystem.java
More file actions
79 lines (55 loc) · 2.16 KB
/
Problem7_AutocompleteSystem.java
File metadata and controls
79 lines (55 loc) · 2.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import java.util.*;
class AutocompleteSystem {
HashMap<String, Integer> queryFrequency = new HashMap<String, Integer>();
public void addQuery(String query) {
if (!queryFrequency.containsKey(query)) {
queryFrequency.put(query, 0);
}
queryFrequency.put(query, queryFrequency.get(query) + 1);
}
public void updateFrequency(String query) {
if (!queryFrequency.containsKey(query)) {
queryFrequency.put(query, 1);
} else {
queryFrequency.put(query, queryFrequency.get(query) + 1);
}
System.out.println(query + " → Frequency: " + queryFrequency.get(query));
}
public void search(String prefix) {
ArrayList<Map.Entry<String, Integer>> results = new ArrayList<Map.Entry<String, Integer>>();
for (Map.Entry<String, Integer> entry : queryFrequency.entrySet()) {
String query = entry.getKey();
if (query.startsWith(prefix)) {
results.add(entry);
}
}
Collections.sort(results, new Comparator<Map.Entry<String, Integer>>() {
public int compare(Map.Entry<String, Integer> a, Map.Entry<String, Integer> b) {
return b.getValue() - a.getValue();
}
});
int count = 0;
for (Map.Entry<String, Integer> entry : results) {
if (count == 10) {
break;
}
System.out.println((count + 1) + ". " + entry.getKey() + " (" + entry.getValue() + " searches)");
count++;
}
}
}
public class Problem7_AutocompleteSystem {
public static void main(String[] args) {
AutocompleteSystem system = new AutocompleteSystem();
system.addQuery("java tutorial");
system.addQuery("javascript");
system.addQuery("java download");
system.addQuery("java tutorial");
system.addQuery("java tutorial");
system.addQuery("java 21 features");
System.out.println("Search results for prefix 'jav':");
system.search("jav");
system.updateFrequency("java 21 features");
system.updateFrequency("java 21 features");
}
}