У Пети сломалась клавиатура. Клавиша b не печатает букву, а стирает из уже набранного
текста самую правую строчную букву. Клавиша B стирает самую правую заглавную.
Если стирать нечего, нажатие ничего не делает. Остальные клавиши печатают себя.
По последовательности нажатий верните итоговый текст.
// BrokenKeyboard возвращает текст после всех нажатий keys.
func BrokenKeyboard(keys string) string
Примеры
"AnotherBrokenGadgetBox" → "notherrokenadgetox"
"abcb" → ""
"xyzbbB" → "x"
"ACDbB" → "AC"
"b" → ""
Разбор первого: Another → B стирает A → nother; дальше набирается rokenGadget,
второе B стирает G → notherrokenadget; в конце набирается ox.
Разбор второго: a → b стирает a → пусто → c → b стирает c → "".
Ограничения
0 ≤ len(keys) ≤ 10⁶, только латинские буквы a–z, A–Z.
- Ожидается O(n). Решение «удалить символ из строки/слайса и искать правую букву каждый раз»
— O(n²), на больших входах не пройдёт.
Разбор и эталонное решение — после своей попытки: на собеседовании подсказок не будет.
Сначала попробуй сам — подсказки не дают готовый ответ.