Тестер палиндромов на C#
Палиндром — это слово или фраза, которая читается так же назад, как и вперед, например «Аргентина манит негра». В этой статье описывается простой метод проверки валидности палиндрома с использованием основных функций манипулирования строками.
Что такое палиндром?
Палиндром — это слово, фраза или ряд чисел, которые читаются одинаково как вперед, так и назад. Палиндромы могут быть очень короткими. Например, слово «Поп» — это палиндром. Они также могут быть очень длинными фразами. В этих случаях знаки препинания и пробелы не учитываются при определении того, является ли фраза палиндромом. Известный пример такой фразы — «Аргентина манит негра”
Проверка того, является ли строка палиндромом
В этой заметке мы создадим простой метод, который проверяет, является ли данная строка палиндромом. Метод будет следовать трехэтапному процессу. Во-первых, строка будет подготовлена, во-вторых, она будет перевернута и, наконец, будет произведено сравнение результата с исходной строкой.
Для начала создайте новый проект консольного приложения и добавьте новый метод в класс программы следующим образом.
По завершении метода он вернет значение true, если строковый параметр содержит палиндром, и значение false в противном случае.
Подготовка строки
Первым этапом процесса является подготовка строки. Все знаки препинания и пробелы будут удалены, а строка будет преобразована в нижний регистр, так что при реверсировании не потребуется дополнительной работы перед выполнением сравнения исходной и реверсированной строки.
Строка имеет перечислитель, который позволяет перебирать каждый из содержащихся в ней символов, используя цикл foreach. Мы можем использовать это для обработки по одному символу за раз в правильном порядке и добавлять символ в отдельную переменную только в том случае, если это буква или числовая цифра. Для выполнения проверки мы можем использовать метод static IsLetterOrDigit класса char.
Поскольку неэффективно выполнять несколько модификаций строки, символы будут добавлены в объект StringBuilder. По завершении цикла окончательное содержимое StringBuilder может быть скопировано в строку, в данном случае с именем «вперед». Чтобы реализовать этот этап процесса, добавьте в метод следующий код:
Реверсирование строки
Строки можно легко поменять местами, используя стандартную функциональность массива. Добавьте приведенный ниже код в метод для выполнения этого шага, удерживая результат в переменной » backwards «.:
Сравнение строк
Последний шаг — сравнить строки «forwards» и » backwards» с помощью оператора равенства. Этот оператор возвращает значение true или false, поэтому его можно вернуть напрямую, добавив в метод последнюю строку кода.
Тестирование кода
Мы можем протестировать код, выполнив метод на наличие допустимых и недопустимых палиндромов. Попробуйте выполнить следующие примеры, добавив код в метод Main программы:
Автор этого материала — я — Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML — то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
заметки, си шарп, палиндром, строки
Палиндром
Палиндром – слово, число, набор символов, словосочетание, которое одинаково читается в обоих направлениях(справа налево и слева направо).
Текстовые палиндромы
Для проверки является строка палиндромом или нет можно использовать несколько различных подходов. Рассмотрим наиболее часто используемые.
Сравнение равноудаленных от центра символов
Для получения результата будем последовательно сравнивать первый символ с последним, второй с предпоследним и т.д. Если символы отличаются то сразу возвращаем значение false.
Данный метод не использует дополнительных массивов и строк для хранения данных.
Сравнение с перевернутой строкой
Для реализации этого метода, необходимо перевернуть строку, а затем сравнить её с исходной.
Сравнение массивов символов исходной и перевернутой строк
Этот вариант не отличается от предыдущего, за исключением того, что в сравнении участвуют массивы символов, которые мы получаем из строк.
Числовые палиндромы
Для определения числа палиндрома, можно преобразовать его в текстовую строку, и использовать один из выше рассмотренных методов. Или разбить число на отдельные цифры, и манипулировать с полученным массивом цифр.
Программирование на C, C# и Java
Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы
ОСТОРОЖНО МОШЕННИКИ! В последнее время в социальных сетях участились случаи предложения помощи в написании программ от лиц, прикрывающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в посторонних группах ВК. Для связи с нами используйте исключительно эти контакты: vscoderu@yandex.ru, https://vk.com/vscode
Определение палиндрома на C#
Создадим программу на Windows Forms которая поможет нам определить, является ли палиндромом введённый текст, слово или число.
Создадим простенький дизайн:

Здесь у нас TextBox, Label и Button. Вердикт о принадлежности или непринадлежности данных к палиндрому мы выведен в MessageBox’е.
Дважды щёлкаем на кнопку «Проверить текст» и переносимся в область кода, где будем творить.
Для начала мы считываем строку, которую введёт пользователь и записываем её в переменную text. Затем мы создаём массив символов с типом char, чтобы по одному символу считать нашу строку. Благодаря этому мы в последствии перевернём введённый текст по символу в обратный порядок. Конвертируем текст из строкового формата в символьный массив благодаря .ToCharArray.
Теперь мы переворачиваем символы введённых данных в обратном порядке благодаря следующему методу:
Иначе говоря, если пользователь ввёл в TextBox строку «12345», то данный метод позволяет по символам перевернуть его до «54321».
Пока что наша переменная записана в виде массива символов. Но сравнивать мы будем не символы, а строки. Поэтому мы объявим строку с инициализацией символами из нашего массива.
Теперь нам осталось лишь сравнить изначально введённую строку текста со строкой текста, которую мы перевернули. Если они равны, то введённые данные — палиндром.
Вот и всё, наша программа готова!

Поделиться в соц. сетях:
5 комментария(ев) к статье “ Определение палиндрома на C# ”
Что такое FinalText? Для чего он нужен?
- Юлия Автор статьи 04.12.2015 в 01:20
finaltext — это переменная типа string (строковый тип, данные в котором представлены именно в виде строки а не, например, посимвольно).
Когда пользователь вводит какое-либо слово, оно записывается в строковую переменную text. Но строковой формат нельзя перевернуть задом наперед (то есть, например «12345» перевернуть в «54321»). Поэтому приходится конвертировать переменную text (и то, что в ней записано) в массив символов char (у нас это — переменная obrtext). В массиве char уже можно по одному символу перевернуть введенное пользователем слово, что мы и делаем.
Затем нам надо сравнить перевернутое слово с словом, введенным пользователем — переменной text. Однако нельзя сравнивать между собой переменные с разными типами данных(string и char). Поэтому мы создаем строковую переменную finaltext и как бы конвертируем символы из переменной obrtext обратно в строковой формат, записывая полученный результат в finaltext, чтобы потом сравнить его с содержимым переменной text.
Спасибо за урок! Подскажите пожалуйста, а что нужно добавить, что бы проверять только буквы, без пробела? Например фраза «милашка как шалим» будет определятся как не палиндром из-за пробелов.
И как знаки препинания игнорировать при проверке?
=)
Как проверить является ли строка палиндромом c
Given a string S consisting of N characters of the English alphabet, the task is to check if the given string is a palindrome. If the given string is a palindrome, then print “Yes“. Otherwise, print “No“.
Note: A string is said to be palindrome if the reverse of the string is the same as the string.
Examples:
Input: S = “ABCDCBA”
Output: Yes
Explanation:
The reverse of the given string is equal to the (ABCDCBA) which is equal to the given string. Therefore, the given string is palindrome.
Input: S = “GeeksforGeeks”
Output: No
Explanation:
The reverse of the given string is equal to the (skeeGrofskeeG) which is not equal to the given string. Therefore, the given string is not a palindrome.
Naive Approach: The simplest approach to use the inbuilt reverse function in the STL. Follow the steps below to solve the problem: