Canp, одинаковые - это, например,
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx0123456012345601
и
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx0123456xxxxxxx012345601
т.е. после удаления х тут будут совсем одинаковые строки
Wataru, да, я понял в чем тут может быть трудность... Кейс, когда m < n, но a > c или b > d.
Например, (0011)^5 и (01)^10
тупой способ - "поштучно" сопоставляя 0011 и 01, выходит 01010101011, итого длина 11
а если по умному, то (01)^10 рассматриваем как 010 101 010 101 010 101 01, и если выкидывать из каждой тройки среднюю цифру, то получается 00110011001101, длиной 14.
Как это всё классифицировать, пока тоже не пойму. Но весьма похоже, тут будет какая-то периодическая конструкция (с длиной периода не более чем a+b+c+d), и справа ещё некий короткий "хвост".
На всякий уточню: требуется именно подпоследовательность, а не обязательно подстрока?
(например, для строки "abc" строка "ac" - только подпоследовательность, а "ab" - подпоследовательность и подстрока)
szQocks, видос про другое. Там с помощью ключа делается принудительное перемонтирование компонента, чтобы сбросить внутренний стейт. К предотвращению лишних ререндеров это не относится.
Вообще я думал, что в этой задаче будут какие-то хитрые оптимизации, связанные именно с числами Фиб., но по факту вместо них можно любую подобную последовательность воткнуть. Набросал ваш рекурсивный вариант на js, работает мгновенно..
Aetae, особенно неудобно, что коробочные тайпгуарды (например, arr.length > 0) не могут убедить тайпскрипт, что в массиве есть элемент, и надо писать кастомный
Как я понял, тебе не очень нравятся нули в конце дробной части? )) Напр., "1.23400"
Они конечно бесполезны, но в то же время число с ними вполне валидно по всем правилам...
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx0123456012345601
и
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx0123456xxxxxxx012345601
т.е. после удаления х тут будут совсем одинаковые строки