Удаление начального префикса из строки

Если source.startswith(pre), верните source[len(pre):]; иначе верните source. Это удаляет только одно совпадение в начале.

Короткий ответ

Что ответить на собеседовании

Если source.startswith(pre), верните source[len(pre):]; иначе верните source. Это удаляет только одно совпадение в начале.

Подробный разбор

Ответ с пояснениями

Условие

Реализуйте функцию, которая проверяет, начинается ли строка source с подстроки pre. Если это так, верните строку без данного префикса; в противном случае верните исходную строку без изменений.

def subtract_prefix(source: str, pre: str) -> str:
    # TODO
    pass

Ответ

Если source.startswith(pre), верните source[len(pre):]; иначе верните source. Это удаляет только одно совпадение в начале.

def subtract_prefix(source: str, pre: str) -> str:
    return source[len(pre):] if source.startswith(pre) else source

assert subtract_prefix('abcabc', 'abc') == 'abc'
assert subtract_prefix('xabc', 'abc') == 'xabc'
assert subtract_prefix('abc', '') == 'abc'
assert subtract_prefix('abc', 'abc') == ''

Строки неизменяемы: исходный объект не редактируется, функция возвращает результат. Встроенный removeprefix в Python 3.9+ делает то же самое. Удаление через обычный replace без ограничения затронуло бы и внутренние вхождения, что нарушает условие.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее