words. Найдите все упорядоченные пары индексов [i, j], где i != j, такие что склейка words[i] + words[j] читается одинаково слева направо и справа налево.
Порядок внутри пары важен: [i, j] и [j, i] — разные склейки, и каждая попадает в ответ, только если сама даёт палиндром. Сами пары можно вернуть в любом порядке.
Перебор всех пар работает за O(n² · L). Попробуйте найти решение, время которого зависит от суммарной длины слов, а не от квадрата их количества.words=['ten', 'net', 'noon', 'on'] → [[0, 1], [1, 0]]
«ten» + «net» = «tennet» и «net» + «ten» = «netten» читаются одинаково в обе стороны. «noon» и «on» палиндрома не дают ни в каком порядке, так что ответ — [0, 1] и [1, 0].
words=['lev', 'el', 'ab', 'xyzba'] → [[0, 1]]
«lev» + «el» = «level» — палиндром, пара [0, 1]. Ни «abxyzba», ни «xyzbaab» палиндромами не являются, так что ответ — только [[0, 1]].
words=['', 'aba', 'c'] → [[1, 0], [0, 1], [2, 0], [0, 2]]
Пустая строка приклеивается к любому палиндрому с обеих сторон: [0, 1], [1, 0], [0, 2], [2, 0].
words=['ten', 'net', 'noon', 'on']
[[0, 1], [1, 0]]
«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 80 тестов на сервере, включая скрытые.