OneEditApart("кот", "собака") -> ложь

Для стандартной задачи проверяют одну вставку, удаление или замену символа двумя указателями за O(n). В примерах есть ошибки: «кот» → «резать», «каст» и «на» не укладываются в одну такую операцию.

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

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

Для стандартной задачи проверяют одну вставку, удаление или замену символа двумя указателями за O(n). В примерах есть ошибки: «кот» → «резать», «каст» и «на» не укладываются в одну такую операцию.

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

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

Условие

OneEditApart("кот", "собака") -> ложь

OneEditApart("кот", "коты") -> истина

OneEditApart("кот", "резать") -> истина

OneEditApart("кот", "каст") -> истина

OneEditApart("кот", "на") -> истина

OneEditApart("кот", "действия") -> ложь

def OneEditApart(s1, s2) -> bool:

Ответ

Для стандартной задачи проверяют одну вставку, удаление или замену символа двумя указателями за O(n). В примерах есть ошибки: «кот» → «резать», «каст» и «на» не укладываются в одну такую операцию.

Ниже проверяется ровно одна правка; одинаковые строки дают False.

def OneEditApart(s1, s2):
    if len(s1) > len(s2):
        s1, s2 = s2, s1
    if len(s2) - len(s1) > 1:
        return False
    i = j = edits = 0
    while i < len(s1) and j < len(s2):
        if s1[i] == s2[j]:
            i += 1
            j += 1
        else:
            edits += 1
            if edits > 1:
                return False
            if len(s1) == len(s2):
                i += 1
            j += 1
    edits += len(s2) - j
    return edits == 1

«кот» → «коты» даёт True. Для варианта «не более одной правки» последнюю проверку меняют на <= 1. Если подразумевались другие операции, исходные ожидания необходимо уточнить, а не подгонять алгоритм.

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

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

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

Подробнее