


Питон, помогите пожалуйста
Палиндромом называется слово, которое одинаково читается как слева направо, так и справа налево, например, в английском языке такими словами являются «radar» и «racecar». Света изучает английский язык и решила принять участие в дистанционном конкурсе знатоков английского языка. Но, когда она писала ответ на задание «найдите самое длинное слово, которое является палиндромом», ошиблась и нажала на клавиатуре одну лишнюю клавишу. Определите, какую букву нужно удалить в набранном Светой слове, чтобы это слово стало палиндромом.
ВХОДНЫЕ ДАННЫЕ
Программа получает на вход строку из строчных английских букв, содержащую не менее 2 и не более 100 000 символов.
ВЫХОДНЫЕ ДАННЫЕ
Программа должна вывести единственное число – номер буквы в строке, при удалении которой слово становится палиндромом. Если при удалении любой буквы слово не станет палиндромом, программа должна вывести число 0.
ПРИМЕРЫ
ВВОД
raceczcar
ВЫВОД
6
ВВОД
car
ВЫВОД
0
s = input()
i = 0
j = len(s) - 1
while i < j and s[i] == s[j]:
i += 1
j -= 1
if i >= j:
print(i + 1)
elif s[:i] + s[i + 1:] == (s[:i] + s[i + 1:])[::-1]:
print(i + 1)
elif s[:j] + s[j + 1:] == (s[:j] + s[j + 1:])[::-1]:
print(j + 1)
else:
print(0)
вот простое решение:
""def is_palindrome(s, left, right):
while left < right:
if s[left] != s[right]:
return False
left += 1
right -= 1
return True
def find_removal_index(s):
left, right = 0, len(s) - 1
while left < right:
if s[left] != s[right]:
if is_palindrome(s, left + 1, right):
return left + 1 # +1, т.к. индексация с 1
elif is_palindrome(s, left, right - 1):
return right + 1
else:
return 0
left += 1
right -= 1
return 0 # Уже палиндром
s = input().strip()
print(find_removal_index(s))""