Я бы использовал стек. Перебирайте символы в строке, и каждый раз, когда я вижу открывающую скобку, я помещаю соответствующую закрывающую скобку в стек. Каждый раз, когда я вижу закрывающую скобку, я проверяю, соответствует ли она вершине стека. Если так, я вытаскиваю персонажа из стека и продолжаю. В противном случае это недопустимая строка.