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 });
}
}
}