Как видно из заголовка, у меня есть задача найти самую длинную повторяющуюся последовательность в строке, и это должно быть сделано только с помощью linq - без ifs, без цикла, без попытки, присваивание допускается только при инициализации переменных, рекурсия позволил. Я нашел решение в Интернете, и я понимаю, что происходит, но я не могу преобразовать его в linq. Я не настолько знаком с ним. Буду очень признателен, если кто-нибудь сможет мне помочь. Вот ссылка на то, что я нашел - https://www.javatpoint.com/program-to-find-longest-repeating-sequence-in-a-string.
List<int> a = new List<int> {1, 2, 1, 2, 1, 2, 3, 2, 1, 2};
List<List<int>> aa = new List<List<int>>();
outerLoop(a);
var max = aa.Max(x => x.Count);
var m = from v in aa
where v.Count == max
select v;
m.Dump();
void outerLoop(List<int> list)
{
List<int> f = new List<int>();
f.AddRange(list.Skip(list.Count-1).Take(list.Count).ToList());
innerLoop(list, list.Skip(1).Take(list.Count).ToList());
f.ForEach(k => outerLoop(list.Skip(1).Take(list.Count).ToList()));
}
void innerLoop(List<int> l, List<int> subList)
{
List<int> f = new List<int>();
f.AddRange(subList.Skip(subList.Count-1).Take(subList.Count).ToList());
var tt = l.TakeWhile((ch, i) => i < subList.Count && subList[i] == ch).ToList();
aa.Add(tt);
f.ForEach(k => innerLoop(l, subList.Skip(1).Take(subList.Count).ToList()));
}
так что я придумал эту "красоту", я не думаю, что это хороший код, но я думаю, что он работает. Если кто-то заинтересован и хочет внести предложения, как сделать его лучше, он более чем рад:)
, если ввод int[] x= {1, 2, 1, 2, 1, 2, 3, 2, 1, 2}
результат должен быть 1212