Удалить из сообщения все повторяющиеся слова (без учета регистра) - C# (189634)

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

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

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

Решение задачи: «Удалить из сообщения все повторяющиеся слова (без учета регистра)»

textual
Листинг программы
using System;
using System.Linq;
using System.Text.RegularExpressions;
namespace ConsoleApplication1
{
    class Program
    {
        public static string DeleteDuplicateWords(string input)
        {
            var punctuation = input.Where(char.IsPunctuation).Distinct().ToArray();
            var words = input.Split()
                .Select(x => x.Trim(punctuation))
                .GroupBy(c => c.ToUpperInvariant()).ToDictionary(g => g.Key, g => g.Count())
                .Where(pair => pair.Value > 1).Select(pair => pair.Key)
                .ToList(); 
            return words.Aggregate(input, (s, del) => Regex.Replace(s, Regex.Escape(del), string.Empty, RegexOptions.IgnoreCase));
        }
        
        private static void Main()
        {
            const string str = "на столе лежали зеленый лук , Зеленый чай";
            Console.WriteLine(DeleteDuplicateWords(str));
            Console.ReadLine();
        }
    }
}

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


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

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

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