|
7 | 7 | import java.util.List;
|
8 | 8 | import java.util.Map;
|
9 | 9 |
|
10 |
| -/** |
11 |
| - * 642. Design Search Autocomplete System |
12 |
| - * |
13 |
| - * Design a search autocomplete system for a search engine. Users may input a sentence (at least one word and end with a special character '#'). For each character they type except '#', you need to return the top 3 historical hot sentences that have prefix the same as the part of sentence already typed. Here are the specific rules: |
14 |
| -
|
15 |
| - The hot degree for a sentence is defined as the number of times a user typed the exactly same sentence before. |
16 |
| - The returned top 3 hot sentences should be sorted by hot degree (The first is the hottest one). If several sentences have the same degree of hot, you need to use ASCII-code order (smaller one appears first). |
17 |
| - If less than 3 hot sentences exist, then just return as many as you can. |
18 |
| - When the input is a special character, it means the sentence ends, and in this case, you need to return an empty list. |
19 |
| - Your job is to implement the following functions: |
20 |
| -
|
21 |
| - The constructor function: |
22 |
| -
|
23 |
| - AutocompleteSystem(String[] sentences, int[] times): This is the constructor. The input is historical data. Sentences is a string array consists of previously typed sentences. Times is the corresponding times a sentence has been typed. Your system should record these historical data. |
24 |
| -
|
25 |
| - Now, the user wants to input a new sentence. The following function will provide the next character the user types: |
26 |
| -
|
27 |
| - List<String> input(char c): The input c is the next character typed by the user. The character will only be lower-case letters ('a' to 'z'), blank space (' ') or a special character ('#'). Also, the previously typed sentence should be recorded in your system. The output will be the top 3 historical hot sentences that have prefix the same as the part of sentence already typed. |
28 |
| -
|
29 |
| -
|
30 |
| - Example: |
31 |
| - Operation: AutocompleteSystem(["i love you", "island","ironman", "i love leetcode"], [5,3,2,2]) |
32 |
| - The system have already tracked down the following sentences and their corresponding times: |
33 |
| - "i love you" : 5 times |
34 |
| - "island" : 3 times |
35 |
| - "ironman" : 2 times |
36 |
| - "i love leetcode" : 2 times |
37 |
| - Now, the user begins another search: |
38 |
| -
|
39 |
| - Operation: input('i') |
40 |
| - Output: ["i love you", "island","i love leetcode"] |
41 |
| - Explanation: |
42 |
| - There are four sentences that have prefix "i". Among them, "ironman" and "i love leetcode" have same hot degree. Since ' ' has ASCII code 32 and 'r' has ASCII code 114, "i love leetcode" should be in front of "ironman". Also we only need to output top 3 hot sentences, so "ironman" will be ignored. |
43 |
| -
|
44 |
| - Operation: input(' ') |
45 |
| - Output: ["i love you","i love leetcode"] |
46 |
| - Explanation: |
47 |
| - There are only two sentences that have prefix "i ". |
48 |
| -
|
49 |
| - Operation: input('a') |
50 |
| - Output: [] |
51 |
| - Explanation: |
52 |
| - There are no sentences that have prefix "i a". |
53 |
| -
|
54 |
| - Operation: input('#') |
55 |
| - Output: [] |
56 |
| - Explanation: |
57 |
| - The user finished the input, the sentence "i a" should be saved as a historical sentence in system. And the following input will be counted as a new search. |
58 |
| -
|
59 |
| - Note: |
60 |
| - The input sentence will always start with a letter and end with '#', and only one blank space will exist between two words. |
61 |
| - The number of complete sentences that to be searched won't exceed 100. The length of each sentence including those in the historical data won't exceed 100. |
62 |
| - Please use double-quote instead of single-quote when you write test cases even for a character input. |
63 |
| - Please remember to RESET your class variables declared in class AutocompleteSystem, as static/class variables are persisted across multiple test cases. Please see here for more details. |
64 |
| - */ |
65 | 10 | public class _642 {
|
66 | 11 | public static class Solution1 {
|
67 | 12 |
|
|
0 commit comments