C# Оптимизация кода перебора слов в тексте

Я перебираю весь текст и делаю словарь, в котором видно, какие слова идут перед каждым словом в тексте. То есть например по тексту "один два три один четыре три" будет сформирован словарь:

  • один -- два, четыре
  • два -- три
  • три -- один
  • четыре -- три

Код реализации:

  public static Dictionary<string, List<string>> dict = new Dictionary<string, List<string>>();

  private List<string> list = text.Split(new char[] { ' ', '-', '%', '(', ')' }).ToList();

  public void TranslateToDict()
        {

            for (int i = 0; i < list.Count - 1; ++i)
            {

                try
                {
                    dict.Add(list[i], new List<string>());
                    dict[list[i]].Add(list[i + 1]);
                }
                catch
                {
                    dict[list[i]].Add(list[i + 1]);
                }
            }


        }

Текст большой и время выполнения этого кода слишком велико(несколько минут)


Ответы (1 шт):

Автор решения: Игорь

Мне кажется, что try у вас много лишней работы делает:

  public void TranslateToDict()
        {
            for (int i = 0; i < list.Count - 1; i++)
            {
                string current = list[i];
                string next = list[i + 1];
                
                if (dict.ContainsKey(current)){
                    dict[current].Add(next);
                }
                else {
                    dict.Add(current, new List<string>() { next });
                }
            }

        }
→ Ссылка