Найти слова, которые отличны от последнего слова и являются симметричными - C#

Узнай цену своей работы

Формулировка задачи:

Дана строка. Словом текста считается любая последовательность букв алфавита; между соседними словами - не менее одного пробела, за последним словом - точка. Найти и сохранить в строке те слова последовательности, которые отличны от последнего слова и являются симметричными. Все остальные слова удалить. На языке C#Помогите пожалуйста!

Решение задачи: «Найти слова, которые отличны от последнего слова и являются симметричными»

textual
Листинг программы
  1. using System;
  2. using System.Linq;
  3.  
  4. namespace ConsoleApplication19
  5. {
  6.     class Program
  7.     {
  8.         static void Main(string[] args)
  9.         {
  10.             string str = "а роза упал а на лапу     азор а.";//если нужно учитывать регистр оставлем так, иначе .ToLower();
  11.             str = str.Substring(0, str.Length - 1);//точка нам не нужна
  12.             char[] c = new char[1];//массив нужен для использования StringSplitOptions.RemoveEmptyEntries (удаляем пустые вхождения)
  13.             c[0] = ' ';
  14.             string[] ar = str.Split(c, StringSplitOptions.RemoveEmptyEntries);//режем строку на слова, игнорим массовые пробелы
  15.             var a = ar.Where(x=> !x.Equals(ar[ar.Length - 1]));//отбираем все слова не равные последнему
  16.             foreach (string s in a)
  17.             {
  18.                 if(IsEqualRevers(s, ar))
  19.                     Console.Write("{0}", s + " ");
  20.             }
  21.  
  22.                 Console.ReadKey();
  23.         }
  24.         //проверяет слово на наличие его зеркального собрата в массиве
  25.         static bool IsEqualRevers(string s, string[] ar)
  26.         {
  27.             char[] ch = s.ToCharArray();//дробим на буквы
  28.             string reverseWord = "";
  29.             foreach(char c in ch.Reverse())
  30.                 reverseWord+=c.ToString();//собираем в обратном порядке
  31.             var a = ar.Where(x => x.Equals(reverseWord));//берём только равные reverseWord
  32.             foreach (string v in a)
  33.             {
  34.                     return true;//есть полное совпадение с реверсированным словом
  35.             }
  36.  
  37.             return false;//нет
  38.         }
  39.     }
  40. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы