Почему эта программа не определяет симметричную последовательность?

Вот сама задача: Последовательность чисел назовём симметричной, если она одинаково читается как слева направо, так и справа налево. Например, следующие последовательности являются симметричными:

1 2 3 4 5 4 3 2 1

1 2 1 2 2 1 2 1

Вашей программе будет дана последовательность чисел. Требуется определить, какое минимальное количество и каких чисел надо приписать в конец этой последовательности, чтобы она стала симметричной.

Формат ввода: сначала вводится число N(1 ≤ N ≤ 100), далее идет N чисел-элементы этой последовательности, натуральные числа от 1 до 9.

Решаю задание по симметричной последовательности. Один из закрытых тестов выдает отрицательный ответ. Тк он закрытый, данные я получить не могу. Вот сам код, на большинстве тестов выдает правильный ответ:

x = int(input())
nums = list(map(int, input().split()))

if nums == nums[::-1]:
    print(0)
else:
    y = 1
    for i in range(len(nums)):
        if nums[-i - 1] == nums[-i - 2]:
            y += 1
        else:
            break
    nums_reverse = nums[:-y]
    print(len(nums_reverse))
    for i in nums_reverse[::-1]:
        print(i, end=" ")

Если возможно, прошу не писать сам код, а просто обьяснить в чем ошибка.


Ответы (1 шт):

Автор решения: MBo

Для небольших длин подойдёт простой алгоритм - мы поочерёдно проверяем, является ли суффикс строки длиной n, n-1, n-2..1 палиндромом. Для полной длины n вы уже проверяете, можно делать то же самое с nums[i:].

Про дописывание перевернутого префикса вы уже знаете (nums_reverse).

→ Ссылка