private static Lookup CalculateStatistic(string line) { var peaces = new Lookup(); var last_symbol = line[0]; var current_peace = new Peace(1); for (var i = 1; i < line.Length; ++i) { var current_symbol = line[i]; if (current_symbol != last_symbol) { current_peace.End = i; peaces.Add(current_peace); var previousSum = current_peace.AggregatedSum; var new_length = current_peace.End - current_peace.Start; current_peace = new Peace(i + 1); current_peace.AggregatedSum = previousSum + new_length; last_symbol = current_symbol; } } current_peace.End = line.Length; peaces.Add(current_peace); return(peaces); }
public void Add(Peace item) { var node = new Node <Peace>(item); if (_head == null) { _head = node; _last = node; } else { _last.Next = node; _last = node; } _count++; }
private static bool InBound(Peace peace, int high) { return(peace.Start <= high); }