Дана строка и два разных символа a и b. Найдите минимальное расстояние
(разность индексов) между каким-нибудь вхождением a и каким-нибудь вхождением
b. Порядок не важен: a может стоять и левее, и правее b. Если хотя бы
одного из символов в строке нет, верните -1.
// MinDistance возвращает min |i - j| по всем s[i] == a, s[j] == b, или -1.
func MinDistance(s string, a, b byte) int
Примеры
"YOXOOX", 'X', 'Y' → 2 // Y на 0, X на 2
"XOOYOX", 'X', 'Y' → 2 // Y на 3, X на 5
"XY", 'X', 'Y' → 1
"XXXX", 'X', 'Y' → -1
Ограничения: 0 ≤ len(s) ≤ 10⁶, строка из ASCII, a != b. Ожидается один
проход, O(n) по времени и O(1) памяти.
Разбор и эталонное решение — после своей попытки: на собеседовании подсказок не будет.
Сначала попробуй сам — подсказки не дают готовый ответ.