У меня есть специальный случай проблемы, но было бы неплохо узнать, возможно ли это для любой функции.
Итак, я хочу найти позицию подстроки в строке. Итак, в python существует метод поиска, который делает именно то, что необходимо.
string.find(s, sub [, start [, end]])
Возвращает самый низкий индекс в s, где подстрока sub обнаруживается так, что sub полностью содержится в с [начать: конец]. Возврат -1 при ошибке. Значения по умолчанию для начала и конца и интерпретация отрицательных значений такая же, как для срезов.
Удивительно, но проблема в том, что поиск большой подстроки в большой строке может выполняться от O(n*m)
до O(n)
(это огромная сделка) в зависимости от алгоритма. Документация не дает информации о временной сложности или информации о базовом алгоритме.
Я вижу несколько способов решения этой проблемы:
- перейдите в исходный код и попытайтесь его понять.
Оба звука звучат не очень просто (я надеюсь, что есть более простой способ). Итак, как я могу найти сложность встроенной функции?