Итак, я не уверен, что полностью понимаю проблему из вашего описания, но я предполагаю, что вы пытаетесь найти в отсортированном массиве неизвестной длины, чтобы найти конкретную строку. Я также предполагаю, что в реальном массиве нет нулей; массив возвращает ноль только в том случае, если вы запрашиваете индекс, выходящий за границы.
Если эти вещи верны, решение должно быть просто стандартным двоичным поиском, хотя тот, в котором вы выполняете поиск по всему целочисленному пространству, и вы просто трактуете null так же, как и поиск строки, которая следует за искомой строкой. , По сути, просто представьте, что ваш отсортированный массив из N строк - это действительно отсортированный массив строк INT_MAX, отсортированных с нулями в конце.
Что я не совсем понимаю, так это то, что вы, кажется, в основном уже сделали это (по крайней мере, из беглого взгляда на код), поэтому я думаю, что, возможно, я не совсем понимаю вашу проблему.