Работа со строками. Оставить в слове только первые вхождения каждого слова - C#

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

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

Дана строка, ограниченная точкой, в которой слова разделены пробелом. Напечатать все слова, отличные от последнего слова, предварительно преобразовав каждое из них по следующему правилу: оставить в слове только первые вхождения каждой буквы. Не получается реализовать эту программу в с#. не до конца понимаю, как прийти к оставлению только первого вхождения буквы в слове. Помогите пожалуйста.

Решение задачи: «Работа со строками. Оставить в слове только первые вхождения каждого слова»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(Transform(Console.ReadLine()));
            Console.ReadKey();
        }
 
        private static string Transform(string source)
        {
            //Сплитом делим строку разделенную пробелом, получаем List<string> слов.
            var arr = source.Split(' ').ToList(); 
            //Удаляем все элементы, которые равны последнему слову (без последнего символа, т.е. точки
            arr.RemoveAll(x => x == arr[arr.Count - 1].Substring(0, arr[arr.Count - 1].Length - 1));
            //Про StringBuilder почитаете на MSDN
            var sb = new StringBuilder();
            //Проходим циклом по листу (в котором уже нет слов, равных последнему
            //arr.Count - 1 означает что последнее слово не берем, в RemoveAll оно не удалилось из-за точки
            for (int i = 0; i < arr.Count - 1; i++)
            {
                //Distinct как раз удаляет повторяющиеся символы, 
                //проходим foreach по каждому символу результирующего набора (после distinct) и добавляем в выходную строку
                foreach(var ch in arr[i].Distinct())
                    sb.Append(ch);
                //Разделяем выходные слова пробелом
                sb.Append(" ");
            }
            return sb.ToString();
        }
    }
}

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


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

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

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