Если возможно, как сравнить две строки за O(1)? Заранее спасибо!
№ | Пользователь | Рейтинг |
---|---|---|
1 | tourist | 4009 |
2 | jiangly | 3823 |
3 | Benq | 3738 |
4 | Radewoosh | 3633 |
5 | jqdai0815 | 3620 |
6 | orzdevinwang | 3529 |
7 | ecnerwala | 3446 |
8 | Um_nik | 3396 |
9 | ksun48 | 3390 |
10 | gamegame | 3386 |
Страны | Города | Организации | Всё → |
№ | Пользователь | Вклад |
---|---|---|
1 | cry | 167 |
2 | Um_nik | 163 |
3 | maomao90 | 162 |
3 | atcoder_official | 162 |
5 | adamant | 159 |
6 | -is-this-fft- | 158 |
7 | awoo | 156 |
8 | TheScrasse | 154 |
9 | Dominater069 | 153 |
9 | nor | 153 |
Название |
---|
Если нет никакой дополнительной информации, то на современных компьютерах никак, потому что меньше, чем за O(n) не убедиться, что они различаются.
Есть такая вещь, как хэши. Возможно, помогут.
Стоит, правда, сказать, что там они написаны неоптимально. Например, существует тест, который, если считать хэши подстрок, "валит" решения с любым основанием и модулям вида 2k.
Также там зачем-то предлагают делить на Pk. Это не нужно делать — просто считаем хэши не от префиксов, а от суффиксов. Тогда нам потребуется всего лишь домножить на Pk и выполнить вычитание.
Но с помощью хэшов нельзя сравнивать строки. Поэтому мне нужен оптимальный ответ.
Можно сравнивать 2 захэшированные строки за O(logN)
Ну как сказать. Если хэши совпадают, то с большой вероятностью и сами строки совпадают. Если допускается какая-то вероятность ложно-положительного ответа, то можно сравнивать хэши строк за О(1), при условии что нам изначально даны строки вместе с их хэшами.