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