Замена первого и последнего вхождения символа в строке

5. Замена первого и последнего вхождения символа в строке

Условие задачи:
Дана строка. Нужно заменить первое и последнее вхождение символа “а” на символ “?”.
Если символ “а” встречается:

  • два и более раз — заменить первое и последнее вхождение
  • один раз — заменить только это вхождение
  • ни разу — строка должна остаться без изменений
Спойлеры к решению
Подсказки
  • Нужно найти индекс первого вхождения символа "а".
  • Для этого можно использовать метод .find().
  • Нужно найти индекс последнего вхождения символа "а".
  • Для этого можно использовать метод .rfind().
  • Если .find() вернул -1, значит символа "а" в строке нет.
  • Так как строки в Python неизменяемые, нужно создать новую строку, а не менять старую.
Решение
def replace_first_and_last_a(text: str) -> str:
    first_index = text.find("а")

    if first_index == -1:
        return text

    last_index = text.rfind("а")

    chars = list(text)
    chars[first_index] = "?"
    chars[last_index] = "?"

    return "".join(chars)

Пример использования:

print(replace_first_and_last_a("абракадабра"))  # ?бракадабр?
print(replace_first_and_last_a("кот"))          # кот
print(replace_first_and_last_a("мама"))         # м?м?
print(replace_first_and_last_a("дом"))          # дом

Функция ищет первое и последнее вхождение символа "а". Если символ найден, строка временно превращается в список символов, потому что строки в Python нельзя изменять напрямую. Затем нужные позиции заменяются на "?", после чего список символов снова собирается в строку.

Если "а" встречается один раз, first_index и last_index будут одинаковыми, поэтому заменится только один символ.