На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

Тестер палиндромов на C#


Палиндром - это слово или фраза, которая читается так же назад, как и вперед, например "Аргентина манит негра". В этой статье описывается простой метод проверки валидности палиндрома с использованием основных функций манипулирования строками.

Что такое палиндром?

Палиндром - это слово, фраза или ряд чисел, которые читаются одинаково как вперед, так и назад. Палиндромы могут быть очень короткими. Например, слово "Поп" - это палиндром. Они также могут быть очень длинными фразами. В этих случаях знаки препинания и пробелы не учитываются при определении того, является ли фраза палиндромом. Известный пример такой фразы - "Аргентина манит негра”

Проверка того, является ли строка палиндромом

В этой заметке мы создадим простой метод, который проверяет, является ли данная строка палиндромом. Метод будет следовать трехэтапному процессу. Во-первых, строка будет подготовлена, во-вторых, она будет перевернута и, наконец, будет произведено сравнение результата с исходной строкой.

Для начала создайте новый проект консольного приложения и добавьте новый метод в класс программы следующим образом.

static bool IsPalindrome(string phrase)
{
}
По завершении метода он вернет значение true, если строковый параметр содержит палиндром, и значение false в противном случае.

Подготовка строки

Первым этапом процесса является подготовка строки. Все знаки препинания и пробелы будут удалены, а строка будет преобразована в нижний регистр, так что при реверсировании не потребуется дополнительной работы перед выполнением сравнения исходной и реверсированной строки.

Строка имеет перечислитель, который позволяет перебирать каждый из содержащихся в ней символов, используя цикл foreach. Мы можем использовать это для обработки по одному символу за раз в правильном порядке и добавлять символ в отдельную переменную только в том случае, если это буква или числовая цифра. Для выполнения проверки мы можем использовать метод static IsLetterOrDigit класса char.

Поскольку неэффективно выполнять несколько модификаций строки, символы будут добавлены в объект StringBuilder. По завершении цикла окончательное содержимое StringBuilder может быть скопировано в строку, в данном случае с именем "вперед". Чтобы реализовать этот этап процесса, добавьте в метод следующий код:

StringBuilder cleanPhraseBuilder = new StringBuilder();
 
foreach (char c in phrase)
{
    if (char.IsLetterOrDigit(c)) cleanPhraseBuilder.Append(c);
}
 
string forwards = cleanPhraseBuilder.ToString().ToLower();
Реверсирование строки

Строки можно легко поменять местами, используя стандартную функциональность массива. Добавьте приведенный ниже код в метод для выполнения этого шага, удерживая результат в переменной " backwards ".:

char[] characters = forwards.ToCharArray();
Array.Reverse(characters);
string backwards = new string(characters);
Сравнение строк

Последний шаг - сравнить строки "forwards" и " backwards" с помощью оператора равенства. Этот оператор возвращает значение true или false, поэтому его можно вернуть напрямую, добавив в метод последнюю строку кода.

return forwards == backwards;
Тестирование кода

Мы можем протестировать код, выполнив метод на наличие допустимых и недопустимых палиндромов. Попробуйте выполнить следующие примеры, добавив код в метод Main программы:

bool palindrome;
 
palindrome = IsPalindrome("А роза упала на лапу Азора");  // true
palindrome = IsPalindrome("А роза не упала на лапу Азора"); // false




Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.



тегизаметки, си шарп, палиндром, строки





Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Урок 32. Обработка исключений C#
Урок 6. Введение в свойства JavaScript: length


© upread.ru 2013-2021
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.