Эта процедура в целом представляет собой сложность времени O (m), где m - это количество строк в вашем поиске.
Это потому, что Dictionary.Contains и Dictionary.Add обе (обычно) O (1) операции.
(Это немного сложнее, чем Dictionary.Add может быть O (n) для n элементов в Словаре, но только когда емкость словаря мала. Таким образом, если вы строите свой словарь сдостаточно большой емкости на начальном этапе, это будет O (m) для m строковых записей.)
При этом, если вы используете только Словарь для проверки существования, вы можете использовать HashSet<string>
.Это позволит вам написать:
public void DistinctWords(String s)
{
HashSet<string> hash = new HashSet<string>(s.Split(' '));
// Use hash here...
Поскольку ваш словарь является локальной переменной и не сохраняется (по крайней мере, в вашем коде), вы также можете использовать LINQ:
var distinctWords = s.Split(' ').Distinct();