Удалить из сообщения все повторяющиеся слова (без учета регистра) - 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();
}
}
}