Программа курса:
Разбор задачи: Поиск индекса первого вхождения в строку
Предложенный нами код решения:
def str_in_str(haystack, needle):
"""
Возвращает индекс первого вхождения needle в haystack.
Если needle не входит в haystack, возвращает -1.
"""
return haystack.find(needle)
Подробный разбор:
- Метод
find()
:- Метод
find()
является встроенным в Python. - Он возвращает индекс первого вхождения строки
needle
в строкуhaystack
. - Если
needle
отсутствует вhaystack
, метод возвращает-1
.
- Метод
- Простота использования:
- Встроенный метод
find()
уже оптимизирован и избавляет нас от необходимости писать собственную логику поиска подстроки.
- Встроенный метод
- Граничные случаи:
Если
needle
пустая строка: Методfind()
всегда возвращает0
, так как пустая строка считается найденной в любой строке с самого начала.haystack = "example" needle = "" print(haystack.find(needle)) # Вывод: 0
Если
needle
длиннее, чемhaystack
: Возвращается-1
, так как подстрока не может быть найдена.haystack = "short" needle = "verylongstring" print(haystack.find(needle)) # Вывод: -1
Примеры из задачи:
- Пример 1:
- Входные данные:
haystack = "hellohello"
,needle = "lo"
. - Подстрока
"lo"
найдена дважды в строке"hellohello"
, но методfind()
возвращает индекс первого вхождения, который равен3
. - Вывод:
3
.
- Входные данные:
- Пример 2:
- Входные данные:
haystack = "python"
,needle = "thon"
. - Подстрока
"thon"
найдена один раз в строке"python"
, начиная с индекса2
. - Вывод:
2
.
- Входные данные:
- Пример 3:
- Входные данные:
haystack = "programming"
,needle = "code"
. - Подстрока
"code"
не найдена в строке"programming"
, поэтому метод возвращает-1
. - Вывод:
-1
.
- Входные данные: