Поиск имен в Dictionary по первым двум буквам - C#

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

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

Задание такое: "В отпуске Вася не тратил время зря, а заводил новые знакомства. Он знакомился с другими крутыми программистами, отдыхающими с ним в одном отеле, и записывал их email-ы. В его дневнике получилось много записей вида <name>:<email>. Чтобы искать записи было быстрее, он решил сделать словарь, в котором по двум первым буквам имени можно найти все записи его дневника. Вася уже написал функцию GetContacts, которая считывает его каракули из блокнота. Помогите ему сделать все остальное!" Я вроде посмотрел возвращает верное значение словаря. А чеккер на сайт с он-лайн курсами по программированию не принимает(скрин снизу). Я метод GetContacts() написал просто, чтобы удобно было отлаживать задание и не все элементы списка туда внес. Если начнете разбираться желательно слишком не усложнять код. Заранее спасибо!
using System;
using System.Collections.Generic;
using System.Linq;
 
namespace UsefullAcquaintancesTask
{
    class Program
    {
        private static List<string> GetContacts()
        {
            List<string> contacts = new List<string>();
            contacts.Add("Ваня:removed@mail.ru");
            contacts.Add("Вася:removed@mail.ru");
            contacts.Add("Ваня:removed@mail.ru");
            contacts.Add("Саша:removed@mail.ru");
            contacts.Add("Саша:removed@mail.ru");
            contacts.Add("Паша:removed@mail.ru");
            contacts.Add("Юрий:removed@mail.ru");
            contacts.Add("Гена:removed@mail.ru");
            return contacts;
        }
        private static Dictionary<string, List<string>> OptimizeContacts(List<string> contacts)
        {
            var dictionary = new Dictionary<string, List<string>>();
            contacts.AddRange(GetContacts());
            string keyForSearch = Console.ReadLine();
            List<string> list = 
                (from a in contacts where a.StartsWith(keyForSearch)select a).ToList<string>();
            if (!dictionary.ContainsKey(keyForSearch)) dictionary[keyForSearch] = list;            
            return dictionary;
        }
 
        static void Main(string[] args)
        {
            var dict = OptimizeContacts(new List<string>());
        }
    }
}

Решение задачи: «Поиск имен в Dictionary по первым двум буквам»

textual
Листинг программы
private static Dictionary<string, List<string>> OptimizeContacts(List<string> contacts)
{
    var dictionary = new Dictionary<string, List<string>>();
    foreach(var c in contacts)
    {
        var key = string.Concat(c.Split(new char[]{':'})[0].Take(2));
        if(!dictionary.ContainsKey(key)) dictionary.Add(key,contacts.Where(x=>x.StartsWith(key)).ToList());
    }
    return dictionary;
}

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


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

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

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