Второе вхождение
Вы решили задачу. Теперь можно сравнить подходы.
Сначала выясняем, есть ли первая f, затем ищем следующую.
Авторский разбор для локальной версии на основе условия задачи. Это не выгрузка чужих посылок и не официальное решение исходного сайта.
Ваше принятое решение
Рекомендуемое решение: Два поиска 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) дополнительной памяти.
На что обратить внимание
- Индексы начинаются с нуля.
- Второй поиск нужно начинать после первого вхождения.
Рекомендация учитывает сложность и читаемость для этой задачи. Единственного самого быстрого решения для всех размеров входа и всех компьютеров может не быть.