Определите, является ли text палиндромом, учитывая только буквы и цифры и игнорируя регистр.
Реализуйте функцию is_palindrome(text).
Ввод
text: Текст для проверки (ASCII-символы).
Вывод
Верните true, если строка — палиндром, иначе false.
Ограничения
0 ≤ длина ≤ 10 000
Примеры
Ввод:
text = "Racecar"
Ожидаемый вывод:
expected = True
Ввод:
std::string text = "Racecar";
Ожидаемый вывод:
bool expected = true;
Ввод:
string text = "Racecar";
Ожидаемый вывод:
bool expected = true;
Пояснение
В нижнем регистре "racecar" читается одинаково в обе стороны.
Ввод:
text = "hello"
Ожидаемый вывод:
expected = False
Ввод:
std::string text = "hello";
Ожидаемый вывод:
bool expected = false;
Ввод:
string text = "hello";
Ожидаемый вывод:
bool expected = false;
Пояснение
"hello" в обратном порядке — "olleh", что отличается.
Как подступиться
Сначала попробуйте сами, затем открывайте подсказки по одной.
Подсказка 1
Перед сравнением игнорируй всё, что не является буквой или цифрой.
Подсказка 2
Двигайся к центру с обоих концов и сравнивай символы без учёта регистра.
Подсказка 3
Аккуратно пропускай знаки препинания и пробелы, чтобы они не ломали корректные палиндромы.
Ожидаемая сложность
время O(n), доп. память O(1)
Ссылки
Это задание адаптировано для CodeUtility. Следуйте условию и ограничениям выше.