Вывести только те слова, которые встречаются в тексте ровно один раз - C# (194337)
Формулировка задачи:
Добрый день!
Помогите плз подкорректировать так, чтобы работало правильно, а именно: если в строке мы берем очередное слово, которое мы проверили ранее, оно не выводится.
То есть, если у нас строка "раз два два раз", у нас ничего не выводится. В моем же случае выводится "два раз"
StringBuilder InitialStr = new StringBuilder("раз два два три три раз");
Console.WriteLine("Исходная строка: " + InitialStr + "\n");
for (int i = 0; i < InitialStr.Length; )
if (char.IsPunctuation(InitialStr[i])) InitialStr.Remove(i, 1);
else ++i;
Console.WriteLine("Измененная строка: " + InitialStr + "\n");
string str = InitialStr.ToString();
str = str.Trim();
int k;
Console.WriteLine("Одиночные слова: ");
string[] word = str.Split(' ');
for (int i = 0; i < word.Count(); ++i) // берем итое слово
{
k = 0;
for (int j = i + 1; j < word.Count()-1; ++j) // берем следующее за итым слово
if (word[i] == word[j]) ++k; // если следующее слово равняется итому, то к+1
if (k == 0) Console.WriteLine(word[i]); // если не найдено совпадений, выводим слово
}
Console.ReadKey();Решение задачи: «Вывести только те слова, которые встречаются в тексте ровно один раз»
textual
Листинг программы
static void Main(string[] args)
{
string data = "раз два два три раз четыре пять";
var result = data.Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries)
.GroupBy(x => x)
.Where(x => x.Count() == 1)
.Select(x => x.Key);
foreach (var item in result) Console.Write(item + " ");
Console.ReadLine();
}