can anyone explain the hashing solution of this problem?
thanks in advance :)
| № | Пользователь | Рейтинг |
|---|---|---|
| 1 | Benq | 3792 |
| 2 | VivaciousAubergine | 3647 |
| 3 | Kevin114514 | 3611 |
| 4 | jiangly | 3583 |
| 5 | strapple | 3515 |
| 6 | tourist | 3470 |
| 7 | dXqwq | 3436 |
| 8 | Radewoosh | 3415 |
| 9 | Otomachi_Una | 3413 |
| 10 | Um_nik | 3376 |
| Страны | Города | Организации | Всё → |
| № | Пользователь | Вклад |
|---|---|---|
| 1 | Qingyu | 162 |
| 2 | adamant | 149 |
| 3 | Um_nik | 146 |
| 4 | Dominater069 | 143 |
| 5 | errorgorn | 141 |
| 6 | cry | 138 |
| 7 | Proof_by_QED | 135 |
| 7 | YuukiS | 135 |
| 9 | chromate00 | 134 |
| 10 | soullless | 132 |
| Название |
|---|



There is 2 parts in hash solution:
1) Largest substring(but not prefix or suffix) equal to prefix. Imagine that we know length of this string. Then we can check if there is a string of this length in O(N).
Let's notice if there is such string of length i + 1 there is string with length i. So we can do binary search to find this is O(n * logn)
2) We iterate over all possible answer's lengthes and check two things
a) This length is less than length in 1 part
b) Prefix of this length equals to suffix of this length(using hashes)
So we get O(n * logn) solution