|
Используя стек, решите следующую задачу. С клавиатуры вводится строка, представляющая собой арифметическое выражение, в котором встречается несколько видов скобок - круглые, квадратные, фигурные. Необходимо проверить, правильно ли расставлены скобки, т.е. каждой открывающей скобке должна соответствовать такая же точно закрывающая.
Пример правильной расстановки: (){[][]([])}. Примеры неправильных расстановок: ([)], ((())
Исходные данные
Строка символов, содержащая скобки, длиной не более 1000 символов
Результат
Одно слово YES или NO
Примеры
| Исходные данные | Результат |
| {()[]} | YES |
| ([] | NO |
Комментарии
Идея решения состоит в следующем. Встречая открывающую скобку, мы помещаем её в стек, встречая закрывающую, мы должны проверить, что на вершине стека стоит такая же точно открывающая. Если это так, то извлекаем её из стека, если не так - выражение неверно. Кроме того, если выражение правильно, то в конце работы стек должен стать пустым.
|