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 будут одинаковыми, поэтому заменится только один символ.