Обновить
1

Пользователь

Отправить сообщение
Только не начинаем для каждого начала подстроки считать символы заново. Вместо этого продолжаем с последнего символа для предыдущего начала
Прокомментировал вот это текстовое описание алгоритма(у меня начало из 2го предложения проассоциировалось с началом подстроки из первого), каюсь, код не смотрел.
Посмотрел — согласен с Вами.
Что касается моего кода:
Писал ночью… в блокноте… на планшете… там еще если все символы уникальны не сработает…
У вас за линию, как и r0zh0k проблемы с алгоритмом. Например вот такой набор символов даст не правильный результат — абвгдвежз.
Public string GetMaxUniqueSubstring(string toCheck)
{
  var checkingSubStringQueue = new Queue<char>();
  var checkingSubStringSet = new Hashset<char>();
  String result =string.Empty;
  for (int i=0;i<toCheck.Length;i++)
  {
    Char pointer =toCheck[i];
    if (checkingSubStringSet.Contains(pointer))
    {
      String testStr = new String(checkingSubStringQueue.ToArray());
      if (testStr.Length>result.Length)
      {
         result=testStr;
      }
      Bool end = false;
      while(!end)
      {
        Char test = checkingSubStringQueue.Dequeue();
        checkingSubStringSet.Remove(test);
        if (test==pointer)
        {
          checkingSubStringQueue.Enqueue(pointer);
          checkingSubStringSet.Add(pointer);
          end=true;
         }
      }
    }
    else
    {
      checkingSubStringQueue.Enqueue(pointer);
      checkingSubStringSet.Add(pointer);
    }
  }
  return result;
}

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность