Для проверки правильности скобочной последовательности в Java можно использовать стек.
Например, задана строка со скобочной последовательностью:
String sequence = "({})[]";
Создадим пустой стек:
Stack<Character> stack = new Stack<>();
Затем проходим по строке и для каждого символа выполняем следующие действия:
- Если символ открывающей скобки ('(', '[', '{'), то помещаем его в стек.
- Если символ закрывающей скобки (')', ']', '}'), проверяем, чтобы стек был не пуст и чтобы верхний символ стека соответствовал открывающей скобке. Если это условие выполняется, то удаляем верхний символ из стека, иначе возвращаем false, так как последовательность неправильная.
- Если на текущей итерации символ не является скобкой, проходим дальше.
После прохождения по всей строке проверяем, чтобы стек был пустым. Если стек пуст, то это означает, что скобочная последовательность правильная. В противном случае возвращаем false.
В итоге, полный код для проверки правильности скобочной последовательности в Java может выглядеть следующим образом:
import java.util.Stack; public class BracketSequenceValidator { public boolean isSequenceCorrect(String sequence) { Stack<Character> stack = new Stack<>(); for (int i = 0; i < sequence.length(); i++) { char ch = sequence.charAt(i); if (ch == '(' || ch == '[' || ch == '{') { stack.push(ch); } else if (ch == ')' || ch == ']' || ch == '}') { if (stack.isEmpty() || !isMatchingPair(stack.pop(), ch)) { return false; } } } return stack.isEmpty(); } private boolean isMatchingPair(char ch1, char ch2) { return ch1 == '(' && ch2 == ')' || ch1 == '[' && ch2 == ']' || ch1 == '{' && ch2 == '}'; } }
Пример использования:
BracketSequenceValidator validator = new BracketSequenceValidator(); String sequence = "({})[]"; boolean isCorrect = validator.isSequenceCorrect(sequence); System.out.println(isCorrect); // выводит true
Описанный выше код проверяет правильность скобочной последовательности в соответствии с правилами:
- Открытые и закрытые скобки должны быть в правильном порядке.
- Внутри каждой пары открывающей и закрывающей скобок может содержаться другая скобочная последовательность.
Надеюсь, это подробное объяснение помогло вам понять, как можно проверить правильность скобочной последовательности в Java.