Работа со строками. Оставить в слове только первые вхождения каждого слова - 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(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д