Шрифт:
18.6. Примеры: палиндром
Довольно технических примеров! Попробуем решить маленькую головоломку. Палиндром (palindrome) — это слово, которое одинаково читается как слева направо так и справа налево. Например, слова anna, petep и malayalam являются палиндромами, а слова ida и homesick — нет. Есть два основных способа определить, является ли слово палиндромом.
• Создать копию букв, расположенных в противоположном порядке, и сравнить ее с оригиналом.
• Проверить, совпадает ли первая буква с последней, вторая — с предпоследней, и так далее до середины.
Мы выбираем второй подход. Существует много способов выразить эту идею в коде. Они зависят от представления слова и от способа отслеживания букв в слове. Мы напишем небольшую программу, которая будет по-разному проверять, является ли слово палиндромом. Это просто позволит нам выяснить, как разные особенности языка программирования влияют на внешний вид и работу программы.
18.6.1. Палиндромы, созданные с помощью класса string
Прежде всего напишем вариант программы, используя стандартный класс
Мы возвращаем значение true, если достигли середины слова, не обнаружив разницы между буквами. Предлагаем вам просмотреть этот код и самим убедиться, что он работает правильно, когда в строке вообще нет букв, когда строка состоит только из одной буквы, когда в строке содержится четное количество букв и когда в строке содержится нечетное количество букв. Разумеется, мы не должны полагаться только на логику, стараясь убедиться, что программа работает правильно. Попробуем выполнить функцию
По существу, причина, по которой мы используем класс
18.6.2. Палиндромы, созданные с помощью массива
А если бы у нас не было класса
Для того чтобы выполнить функцию