Найти слова, которые отличны от последнего слова и являются симметричными - C#
Формулировка задачи:
Дана строка. Словом текста считается любая последовательность букв алфавита; между соседними словами - не менее одного пробела, за последним словом - точка.
Найти и сохранить в строке те слова последовательности, которые отличны от
последнего слова и являются симметричными. Все остальные слова удалить. На языке C#Помогите пожалуйста!
Решение задачи: «Найти слова, которые отличны от последнего слова и являются симметричными»
textual
Листинг программы
using System; using System.Linq; namespace ConsoleApplication19 { class Program { static void Main(string[] args) { string str = "а роза упал а на лапу азор а.";//если нужно учитывать регистр оставлем так, иначе .ToLower(); str = str.Substring(0, str.Length - 1);//точка нам не нужна char[] c = new char[1];//массив нужен для использования StringSplitOptions.RemoveEmptyEntries (удаляем пустые вхождения) c[0] = ' '; string[] ar = str.Split(c, StringSplitOptions.RemoveEmptyEntries);//режем строку на слова, игнорим массовые пробелы var a = ar.Where(x=> !x.Equals(ar[ar.Length - 1]));//отбираем все слова не равные последнему foreach (string s in a) { if(IsEqualRevers(s, ar)) Console.Write("{0}", s + " "); } Console.ReadKey(); } //проверяет слово на наличие его зеркального собрата в массиве static bool IsEqualRevers(string s, string[] ar) { char[] ch = s.ToCharArray();//дробим на буквы string reverseWord = ""; foreach(char c in ch.Reverse()) reverseWord+=c.ToString();//собираем в обратном порядке var a = ar.Where(x => x.Equals(reverseWord));//берём только равные reverseWord foreach (string v in a) { return true;//есть полное совпадение с реверсированным словом } return false;//нет } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д