В единственной строке файла находится строка
состоящая не более чем из
маленьких букв английского алфавита. Определите можно ли добавить некоторое(возможно нулевое) количество букв «a» в начало строки, чтобы строка стала палиндромом.
Напомним вам, что палиндромом называются строки, которые читаются одинаково как слева-направо, так и справа-налево.
В ответ запишите наименьшее необходимое количество букв «a», а если строку s невозможно сделать палиндромом проделывая описанную операцию — запишите в ответ .
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