/
NikolayIvkin
/
TheAlgorithms
Обзор
Документация
Войти
/
NikolayIvkin
/
TheAlgorithms
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/main/java/com/thealgorithms/stacks/BalancedBrackets.java
80 строк
3 KB
Alex Klymenko
refactor: `BalancedBrackets` (#5391)
25 авг 2024, 23:21
Не верифицирован
25 авг 2024, 23:21
7e9cdad
Код
Авторство
О чём код?
package com.thealgorithms.stacks; import java.util.Stack; /** * The nested brackets problem is a problem that determines if a sequence of * brackets are properly nested. A sequence of brackets s is considered properly * nested if any of the following conditions are true: - s is empty - s has the * form (U) or [U] or {U} where U is a properly nested string - s has the form * VW where V and W are properly nested strings For example, the string * "()()[()]" is properly nested but "[(()]" is not. The function called * is_balanced takes as input a string S which is a sequence of brackets and * returns true if S is nested and false otherwise. * * @author akshay sharma * @author <a href="https://github.com/khalil2535">khalil2535<a> * @author shellhub */ final class BalancedBrackets { private BalancedBrackets() { } /** * Check if {@code leftBracket} and {@code rightBracket} is paired or not * * @param leftBracket left bracket * @param rightBracket right bracket * @return {@code true} if {@code leftBracket} and {@code rightBracket} is * paired, otherwise {@code false} */ public static boolean isPaired(char leftBracket, char rightBracket) { char[][] pairedBrackets = { {'(', ')'}, {'[', ']'}, {'{', '}'}, {'<', '>'}, }; for (char[] pairedBracket : pairedBrackets) { if (pairedBracket[0] == leftBracket && pairedBracket[1] == rightBracket) { return true; } } return false; } /** * Check if {@code brackets} is balanced * * @param brackets the brackets * @return {@code true} if {@code brackets} is balanced, otherwise * {@code false} */ public static boolean isBalanced(String brackets) { if (brackets == null) { throw new IllegalArgumentException("brackets is null"); } Stack<Character> bracketsStack = new Stack<>(); for (char bracket : brackets.toCharArray()) { switch (bracket) { case '(': case '[': case '<': case '{': bracketsStack.push(bracket); break; case ')': case ']': case '>': case '}': if (bracketsStack.isEmpty() || !isPaired(bracketsStack.pop(), bracket)) { return false; } break; default: return false; } } return bracketsStack.isEmpty(); } }