using System.Collections.Generic;
static int GetMaxLengthOfDuplicateSubstring(string value, out string resultString) {
HashSet<char> duplicates = value
.Where(group => group.Count() > 1)
.Select(group => group.Key)
resultString = string.Concat(value.Where(c => !duplicates.Contains(c)));
return value.Select(c => duplicates.Contains(c) ? ++current : current = 0).Max();
public static void Main() {
string value = "aqaswasldkaslfaslyetdop";
var length = GetMaxLengthOfDuplicateSubstring(value, out var result);
Console.WriteLine($"{value} => {result} ({length})");