Как проверить, сбалансированы ли скобки? - PullRequest
0 голосов
/ 18 июня 2019

Напишите функцию с именем validBraces, которая принимает строку фигурных скобок и определяет, является ли порядок фигурных скобок действительным. validBraces должен возвращать true, если строка верна, и false, если она недействительна.

Все входные строки будут непустыми и состоят только из открытых скобок (, закрытых скобок ), открытых скобок [, закрытых скобок ], открытых фигурных скобок { и закрытых фигурных скобок }.

Что считается действительным?

Строка скобок считается действительной, если все скобки сопоставлены с правильной скобкой. Например:

(){}[] и ([{}]) будут считаться действительными, а (}, [(]) и [({})](] будут считаться недействительными.

Specification
validBraces(braces)

Проверяет правильность распоряжения скобками

Параметры
фигурные скобки: строка - строковое представление порядка фигурных скобок

Возвращаемое значение
Boolean - Возвращает true, если порядок скобок действителен

Примеры:

    Input   Output
validBraces( "(){}[]" )     true
validBraces( "(}" )         false
validBraces( "[(])" )       false
validBraces( "([{}])" )     true

1 Ответ

0 голосов
/ 18 июня 2019

Это довольно тривиальное назначение, и вы можете использовать стек (т. Е. Массив / список).Затем вы перебираете вводимую строку char по char и, обнаружив открывающую скобку ((, <, { и т. Д.), Помещаете эту скобку в свой стек (или добавляете в массив, не имеет значения).И когда вы сталкиваетесь с закрывающей скобкой (), >, } и т. Д.), Тогда вы выталкиваете последний элемент из своего стека.Затем вы проверяете, совпадает ли тип скобок, поэтому, когда у вас есть >, вы должны вытолкнуть < из своего стека, иначе вы остановите процесс, жалуясь на несовпадающие скобки (или что-то еще).После того, как вы сделали итерацию без ошибок, ваш стек должен быть пустым.Вы можете использовать counter / flag, если вам нужно знать, были ли обработаны какие-либо скобки.

...