К списку задач
Легко Решено: 0 Процент решений: 0%

Строка-палиндром

Проверьте, читается ли текст одинаково слева направо и справа налево.

Чему вы научитесь

  • Сравнивать символы с обоих концов
  • Останавливаться при первом несовпадении
  • Обрабатывать пустые и односимвольные строки

Условие

Определите, является ли text палиндромом, учитывая только буквы и цифры и игнорируя регистр.

Реализуйте функцию is_palindrome(text).

Ввод

text: Текст для проверки (ASCII-символы).

Вывод

Верните true, если строка — палиндром, иначе false.

Ограничения

0 ≤ длина ≤ 10 000

Примеры

Пример 1
Ввод:
text = "Racecar"

Ожидаемый вывод:
expected = True
Ввод:
std::string text = "Racecar";

Ожидаемый вывод:
bool expected = true;
Ввод:
string text = "Racecar";

Ожидаемый вывод:
bool expected = true;

Пояснение

В нижнем регистре "racecar" читается одинаково в обе стороны.

Пример 2
Ввод:
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. Следуйте условию и ограничениям выше.

Учитесь у других

Решения сообщества

Пока нет опубликованных решений. Решите задание, чтобы поделиться первым.