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

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

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

В ответ запишите наименьшее необходимое количество букв «a», а если строку s невозможно сделать палиндромом проделывая описанную операцию — запишите в ответ − 1  .

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

# Проверка, является ли исходная строка палиндромом
if S == S[::-1]:  # S[::-1] - срез переворачивания строки
    print(0)  # Выводим необходимое количество букв ’a’, то есть 0
else:  # Иначе нужно попробовать дописать в начало строки буквы ’a’
    left_count_a = 0  # Счётчик для букв ’a’ слева
    right_count_a = 0  # Счётчик для букв ’a’ справа

    for i in range(len(S) // 2):
        # Пока слева будут идти буквы ’a’, будем увеличивать счётчик
        if S[i] == ’a’:
            left_count_a += 1
        # В ином случае остановим цикл
        else:
            break
    # Аналогично с буквами ’a’ с правого конца строки
    for i in range(len(S) // 2):
        if S[-i - 1] == ’a’:
            right_count_a += 1
        else:
            break

    # Если слева букв ’a’ меньше, чем справа,
    # то можно добавить недостающеее количество букв ’a’ слева
    if left_count_a <= right_count_a:
        S = ’a’ * (right_count_a - left_count_a) + S
    # В ином случае при дописывании слева букв ’a’
    # строка никогда не станет палиндромом,
    # так как справа букв ’a’ меньше

    # В итоге проверим, стала ли строка палиндромом
    if S == S[::-1]:
        # Выводим необходимое количество букв ’a’
        print(right_count_a - left_count_a)
    else:
        # Выводим -1, что означает,
        # что строку нельзя сделать палиндромом таким образом
        print(-1)

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