Вводит предложение от пользователя, определяет и отображает неповторяющиеся слова в алфавитном порядке - PullRequest
0 голосов
/ 04 апреля 2011

Официальный вопрос: напишите консольное приложение, которое вводит предложение от пользователя (не допускает пунктуации), затем определяет и отображает неповторяющиеся слова в алфавитном порядке.Обращайтесь с прописными и строчными буквами одинаково.[Подсказка: вы можете использовать строковый метод Split без аргументов, как в предложении. Split (), чтобы разбить предложение на массив строк, содержащих отдельные слова.По умолчанию Split использует пробелы в качестве разделителей.Используйте строковый метод ToLower в предложениях select и orderby вашего запроса LINQ, чтобы получить строчную версию каждого слова.]

Это то, что у меня пока есть:

static void Main(string[] args)
        {   // Creates list of type string
            List<string> list = new List<string>();
            // Writes for sentence
            Console.Write("Enter your sentence. No punctuation.   : ");
            // Converts console into string
            string sent = (Console.ReadLine());
            // Splits string into array
            string[] words = sent.Split();
            // Writes array to list
            for (int i = 0; i < words.Length; i++)
            {
                list.Add(words[i]);
            }
            // Sorts words
            var sort =
                from word in list
                let lowerWord = word.ToLower()
                orderby lowerWord
                select lowerWord;

            // I assume a var query goes here to delete dup words

            // Writes words
            foreach (string c in sort)
            {
                Console.WriteLine(c);
            }
        }

Я не знаюне знаю, как найти дубликаты и удалить их.

Ответы [ 3 ]

2 голосов
/ 04 апреля 2011

Будет ли

var unique = sort.Distinct();

работать на вас?

1 голос
/ 04 апреля 2011

После сортировки пройдитесь по списку и сравните каждое слово с предыдущим.Если они совпадают, удалите слово.Поскольку список отсортирован, все дубликаты должны быть смежными.

1 голос
/ 04 апреля 2011
    public static IEnumerable<string> GetAlphabetizedUniqueWords(string sentence)
    {
        return (sentence ?? string.Empty)
            .Split()
            .Select(x => x.ToLowerInvariant())
            .Distinct()
            .OrderBy(x => x);
    }


    static void Main( )
    {
        Console.Write("Enter your sentence. No punctuation.   : ");
        foreach (var word in GetAlphabetizedUniqueWords(Console.ReadLine()))
            Console.WriteLine(word);
    }
...