Мини-урок · перед практикой

Второе вхождение

Сначала выясняем, есть ли первая f, затем ищем следующую.

Как к ней подойти

Потренируйтесь находить нужные символы и фрагменты строки, не теряя границы срезов.

Коротко о теме

У строки есть индексы, срезы и методы поиска. Индексация начинается с нуля, правая граница среза не включается. Перед сборкой ответа проверьте, что произойдёт, если искомый фрагмент отсутствует.

Ключевая идея · Два поиска find

Начальная позиция второго поиска исключает первое вхождение. Отсутствие второго автоматически даёт −1.

Проверьте перед запуском

  • Индексы начинаются с нуля.
  • Второй поиск нужно начинать после первого вхождения.

Сравните свой подход

Ниже - готовое решение, другой способ, если он есть, и важные детали проверки.

Ваше принятое решение

Рекомендуемое решение: Два поиска find

Начальная позиция второго поиска исключает первое вхождение. Отсутствие второго автоматически даёт −1.

s = input()
first = s.find('f')
if first == -1:
    print(-2)
else:
    print(s.find('f', first + 1))

Время: O(n). Память: O(n) для строки; O(1) дополнительной памяти.

Другой способ: Счётчик при проходе

До первой f ответ −2, после первой −1, после второй — её индекс.

s = input()
count = 0
answer = -2
for i, char in enumerate(s):
    if char == 'f':
        count += 1
        answer = -1
        if count == 2:
            answer = i
            break
print(answer)

Время: O(n). Память: O(n) для строки; O(1) дополнительной памяти.