Найти слова, которые отличны от последнего слова и являются симметричными - 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;//нет
        }
    }
}

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


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

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

7   голосов , оценка 4 из 5
Похожие ответы