Решение задачи со строками на C#
Я пытаюсь решить задачу
Требуется найти максимальную по длине подстроку данной строки, такую что каждый символ встречается в ней не более k раз.
Входные данные
В первой строке даны два целых числа n и k (1 ≤ n ≤ 100000, 1 ≤ k ≤ n ) , где n – количество символов в строке. Во второй строке n символов – данная строка, состоящая только из строчных латинских букв.
Выходные данные
В выходной файл выведите два числа – длину искомой подстроки и номер её первого символа. Если решений несколько, выведите любое.
Примеры
входные данные
3 1
abb
выходные данные
2 1
входные данные
5 2
ababa
выходные данные
4 1
Вот мой код:
using System;
using System.Collections.Generic;
internal class Program
{
private static void Main(string[] args)
{
string[] str = Console.ReadLine().Split(' ');
long n = long.Parse(str[0]);
long k = long.Parse(str[1]);
string mass = Console.ReadLine();
Dictionary<char, long> dic = new Dictionary<char, long>();
long max_len = 0;
long start_simv = 1;
int l = 0;
for (int r = 0; r < n; r++)
{
if (dic.ContainsKey(mass[r]) != true)
dic.Add(mass[r], 0);
dic[mass[r]]++;
while (dic[mass[r]] > k)
{
if (dic[mass[l]] > 0)
dic[mass[l]]--;
l++;
}
if (max_len < r - l + 1)
{
max_len = r - l + 1;
start_simv = l + 1;
}
}
Console.WriteLine(max_len + " " + start_simv);
Console.ReadLine();
}
}
Выдает неправильный ответ. Задача тут: https://informatics.msk.ru/mod/statements/view.php?chapterid=112554#1
Заранее спасибо!