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

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

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

Задание такое: "В отпуске Вася не тратил время зря, а заводил новые знакомства. Он знакомился с другими крутыми программистами, отдыхающими с ним в одном отеле, и записывал их email-ы. В его дневнике получилось много записей вида <name>:<email>. Чтобы искать записи было быстрее, он решил сделать словарь, в котором по двум первым буквам имени можно найти все записи его дневника. Вася уже написал функцию GetContacts, которая считывает его каракули из блокнота. Помогите ему сделать все остальное!" Я вроде посмотрел возвращает верное значение словаря. А чеккер на сайт с он-лайн курсами по программированию не принимает(скрин снизу). Я метод GetContacts() написал просто, чтобы удобно было отлаживать задание и не все элементы списка туда внес. Если начнете разбираться желательно слишком не усложнять код. Заранее спасибо!
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. namespace UsefullAcquaintancesTask
  5. {
  6. class Program
  7. {
  8. private static List<string> GetContacts()
  9. {
  10. List<string> contacts = new List<string>();
  11. contacts.Add("Ваня:removed@mail.ru");
  12. contacts.Add("Вася:removed@mail.ru");
  13. contacts.Add("Ваня:removed@mail.ru");
  14. contacts.Add("Саша:removed@mail.ru");
  15. contacts.Add("Саша:removed@mail.ru");
  16. contacts.Add("Паша:removed@mail.ru");
  17. contacts.Add("Юрий:removed@mail.ru");
  18. contacts.Add("Гена:removed@mail.ru");
  19. return contacts;
  20. }
  21. private static Dictionary<string, List<string>> OptimizeContacts(List<string> contacts)
  22. {
  23. var dictionary = new Dictionary<string, List<string>>();
  24. contacts.AddRange(GetContacts());
  25. string keyForSearch = Console.ReadLine();
  26. List<string> list =
  27. (from a in contacts where a.StartsWith(keyForSearch)select a).ToList<string>();
  28. if (!dictionary.ContainsKey(keyForSearch)) dictionary[keyForSearch] = list;
  29. return dictionary;
  30. }
  31. static void Main(string[] args)
  32. {
  33. var dict = OptimizeContacts(new List<string>());
  34. }
  35. }
  36. }

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

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

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


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

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

13   голосов , оценка 3.769 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы