Задача к ЕГЭ по информатике на тему «прочие прототипы» №17

В единственной строке файла 24-5.txt находится строка s  состоящая не более чем из 107  маленьких букв английского алфавита. Определите можно ли добавить некоторое (возможно нулевое) количество латинских букв в начало строки, чтобы строка в итоге стала палиндромом.

Напомним вам, что палиндромом называются строки, которые читаются одинаково как слева-направо, так и справа-налево.

В ответ запишите наименьшее необходимое количество латинских букв.

S = open("24-5.txt").readline()

ans = -1  # Переменная для ответа
for i in range((len(S) + 1) // 2 - 1, -1, -1):  # Перебор "середины" строки
    chet = True  # Переменная-флаг для палиндрома чётной длины
    nechet = True  # Переменная-флаг для палиндрома нечётной длины
    for j in range(i + 1):  # Перебираем зеркальные символы для проверки палиндрома

        if S[i - j] != S[i + j]:  # Симметрия для нечётной длины нарушена
            nechet = False

        if 2 * i + 1 == len(S):  # Изначально i не может являться серединой строки с чётной длиной
            chet = False
        elif S[i - j] != S[i + j + 1]:  # Симметрия для чётной длины нарушена
            chet = False

        if nechet == False and chet == False:
            break

    if chet:  # Для текущего i можно получить палиндром чётной длины
        ans = len(S) - 2 * (i + 1)
        break
    elif nechet:  # Для текущего i можно получить палиндром нечётной длины
        ans = len(S) - 2 * i - 1
        break

print(ans)

Ответ: 592123
Оцените статью
Я решу все!