Помогите Васе понять, будет ли фраза палиндромом. Учитываются только буквы и цифры, заглавные и строчные буквы считаются одинаковыми.
Решение должно работать за O(N), где N — длина строки на входе.
Формат ввода
В единственной строке записана фраза или слово. Буквы могут быть только латинские. Длина текста не превосходит 20000 символов.
Фраза может состоять из строчных и прописных латинских букв, цифр, знаков препинания.
Формат вывода
Выведите «True», если фраза является палиндромом, и «False», если не является.
import string
sp = (input()).lower()
sp = sp.replace(' ', '')
for p in string.punctuation:
if p in sp:
sp = sp.replace(p, '')
i = 0
flag = 1
while i < len(sp) // 2:
if (sp[i] != sp[len(sp) - i - 1]):
flag = 0
break
i += 1
if (flag == 0):
print('False')
else:
print('True')