Сообщение Re[2]: Принудительный выход из рекурсии в случае, если ответ от 21.11.2020 18:57
Изменено 21.11.2020 18:59 Буравчик
Re[2]: Принудительный выход из рекурсии в случае, если ответ уж
Если функцию is_merge закэшировать, то получим рекурсию + динамику.
Это гарантируем максимальное время работы за O(N^2) от длины строки
Потребляемую память можно уменьшить, если оперировать индексами (позициями символов), а не целыми строками
Это гарантируем максимальное время работы за O(N^2) от длины строки
from functools import lru_cache
@lru_cache()
def is_merge(s, part1, part2):
if part1 == '':
return s == part2
if part2 == '':
return s == part1
if s == '':
return False
return s[0] == part1[0] and is_merge(s[1:], part1[1:], part2) or s[0] == part2[0] and is_merge(s[1:], part1, part2[1:])
Потребляемую память можно уменьшить, если оперировать индексами (позициями символов), а не целыми строками
Re[2]: Принудительный выход из рекурсии в случае, если ответ
Если функцию is_merge закэшировать, то получим рекурсию + динамику.
Это гарантирует максимальное время работы за O(N^2) от длины строки
Потребляемую память можно уменьшить, если оперировать индексами (позициями символов), а не целыми строками
Это гарантирует максимальное время работы за O(N^2) от длины строки
from functools import lru_cache
@lru_cache()
def is_merge(s, part1, part2):
if part1 == '':
return s == part2
if part2 == '':
return s == part1
if s == '':
return False
return s[0] == part1[0] and is_merge(s[1:], part1[1:], part2) or s[0] == part2[0] and is_merge(s[1:], part1, part2[1:])
Потребляемую память можно уменьшить, если оперировать индексами (позициями символов), а не целыми строками