Я обычно оцениваю на глазок просто мысленно предполагая что данных очень много.
Например строка длиной 2 млрд символов.
В этом случае 3 линейных поиска по ней (indexOf) дадут нам формулу
O(n)
Это в негативном сценарии когда мы не нашли скобочек трех типов.
Но в позитивном сценарии если мы нашли - начинает работать еще более хардкорная логика
реплейсмента которая ... ну я не знаю как работает. replace(..) которая под капотом тоже имеет
свою complexity. Наверное тоже линейную если стоит билдер строк. Получается что линейная вложена
в другую линейную. Получается квадратичная.
o(n^2)
Вообще мне кажется что этот код не оптимален и его лучше просто переписать на какой-то replace
с регулярками чтоб заменять не только первое вхождение но и все. Впрочем я тут не сильно помню как
Js работает с заменой. Пускай знающие откомментируют.