\ uFFFF - это "символ", который сортируется последним в 16-разрядном "алфавите", то есть после любой действительной буквы, символа или специального символа.
Когда вы выполняете двоичный поиск строки вотсортированный массив, вы найдете место, где эта строка может быть вставлена.Когда у вас есть несколько одинаковых строк, вы получаете местоположение перед первым.Когда вы добавляете «последнюю букву алфавита» после вашей строки, точка вставки будет после последней из идентичных строк, следовательно, вы получите диапазон идентичных строк в отсортированном массиве.
Представьте себе это:Предположим, вы не можете использовать букву Z
в ваших словах.Теперь у вас есть отсортированный массив строк:
0 1 2 3 4 5 6
aab abb abc abc abd bcx bdy
Если вы ищете abc
, бинарный поиск покажет вам первое место, где вы можете вставить его, а именно 2. Если вы ищете abcZ
, thoug, бинарный поиск вернул бы 4, потому что abcZ
идет в алфавитном порядке сразу после abc
.Это позволяет вам знать, что диапазон между 2 включительно и 4 исключительно занят строкой abc
.Если оба поиска возвращают одно и то же число, вы знаете, что строка отсутствует в массиве.
В приведенном вами абзаце \uFFFF
играет роль "запрещенной буквы Z" из моего примера.