2012-02-07 3 views
4

Вы данный абзац, в котором длина всех слов в строке, имеет следующие свойства:Поиск слова в данном пункте

  • Одд положение слова в увеличивается порядок их длины ,
  • Даже Позиционные слова находятся в по убыванию Порядок их длины.

Вам дается слово, и вам необходимо написать код для его поиска в данном параграфе и вернуть номер строки.

+0

пахнет домашней работой –

+0

Как указывается данный параграф? как 'char []'/'String' или как список слов/строк? [и каждое слово/строка - 'char' /' String'] – amit

+1

@mekici Недавно было задано в интервью. – d123

ответ

7

Если каждая строка задается список слов, это на самом деле два отсортированных подсписки:

(1) Список нечетных слов: упорядоченные increasinly по длине
(2) список четных слов: сортированы убывая по длине

Используйте двоичный поиск на обоих списках, с компаратором Accordding к: word.length()
После того, как вы нашли матч [слово, которое вы ищете, и слово в списке, вы в настоящее время ищете] находится в том же length: проверьте, является ли это одним и тем же словом.

повтор для каждой линии.

Сложность [для каждой строки]: O(logn * |S|) где |S| это размер вашего слова и n этого количества слов в строке.

-1

Кажется, нет требований к сложности набора времени - так почему бы просто не реализовать линейный поиск? Возможно, это странное/даже просто добавленное, чтобы смутить вас! Держите его простым;)

+0

В вопросе интервью ответ *** никогда *** «линейный поиск». –

+0

Интервью У Qs может быть некоторый шум, чтобы смутить вас. Ваша работа заключается в том, чтобы извлечь соответствующие фрагменты. –

+0

В моем ответе я не пытался быть грубым. Я просто перечитываю Q, прежде чем переходить на сложное решение! Но, конечно, я тоже признаю это решение! Cheers :) –

Смежные вопросы