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