Найти слова, которые отличны от последнего слова и являются симметричными - 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;//нет
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д