Задачи
March 17
Задача. Наибольшая подстрока между двумя одинаковыми символами
Дана строка S. Верните длину самой длинной подстроки между двумя одинаковыми символами, исключая эти два символа. Если такой подстроки нет, то -1.
Справка: подстрока - это непрерывная последовательность символов в строке.
Пример: S = "abca"
Output: 2
Примечание: подстрока "bc"
Разбор
Для решения этой задачи используем наш любимый hash-map. В качестве ключа будет символ строки, а значение - это первый индекс, где мы втретили этот символ.
Тогда при проходе по строке, для символа, ктр уже есть в нашем hashMap мы вычислим длину подстроки и сравним с основной результирующей переменной.
Как всегда, смотрите детали релизации ниже.
Реализация
static int FindMaxLengthBetweenEqualCharacters(string s) { int maxLen = -1; var map = new Dictionary<char, int>(); for (int i = 0; i < s.Length; i++) { if (!map.ContainsKey(s[i])) { map[s[i]] = i; } else { maxLen = Math.Max(maxLen, i - map[s[i]] - 1); } } return maxLen; }
https://gist.github.com/unilecs/ae7be8ad8c996e00cc69aa3cae9f303f