1.2Kпросмотров
28.5%от подписчиков
18 марта 2026 г.
Score: 1.3K
🧠 Разбор задачи про анаграммы Ошибка была в этой части кода:
for c in t: if c not in counts: return False counts[c] -= 1
Функция уменьшает счётчик, но не проверяет, что он не стал отрицательным. Рассмотрим пример: s = "aab"
t = "abb" После обработки s словарь будет таким: {'a': 2, 'b': 1} Далее обрабатываем t: 'a' → 1
'b' → 0
'b' → -1 Счётчик b стал -1, но функция всё равно возвращает True. Это неверно — строки не являются анаграммами. --- Правильное исправление Нужно проверить, что счётчик не стал отрицательным:
def is_anagram(s, t): if len(s) != len(t): return False counts = {} for c in s: counts[c] = counts.get(c, 0) + 1 for c in t: if c not in counts: return False counts[c] -= 1 if counts[c] < 0: return False return True
Такие дефекты коварны тем, что: • код выглядит корректно
• простые тесты проходят
• ошибка появляется только на некоторых входных данных Такие задачи часто спрашивают на собеседованиях, поэтому хорошо помнить о том, как их решать. #задача