Необходимо проверить правильно ли расставлены круглые скобки в строке. Для этого поэтапно проанализируем каждый символ в строке, а также будем считать так ли стоят скобки. Скобки должны сначала открываться, а потом закрываться, но никак иначе.
Заводим переменную-счётчик для подсчёта правильности последовательности скобок. Если начинается строка с закрывающей скобки, то значит уже ошибка и анализировать дальше нет смысла.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
import java.io.PrintStream; public class main { //объявление класса public static boolean parsing(String str) //объявление функции, которая проверяет правильность последовательности { int check_bracket = 0; //задаём переменную-счётчик для проверки for (int i = 0; i < str.length(); i++) { //от 0 до длины строки не включительно if (check_bracket < 0) { //если счётчик меньше нуля return false; //вернуть false, последовательность не правильная } String one_symbol = str.substring(i, i + 1); //получаем символ if (one_symbol.equals("(")) { //проверяем является ли он открывающей скобкой check_bracket++; //если да, то наращиваем счётчик } else { //иначе check_bracket--; //уменьшаем счётчик на единицу } } if (check_bracket == 0) { //если счётчик проверки равен нулю, return true; //то значит, что все скобки проставлены верно } else { //иначе return false; //последовательность не верна } } public static void main(String[] args) { //основной метод программы String var = "()()())"; //задаём скобочную последовательность System.out.println(parsing(var)); //выводим результат метода с передачей значения } } |
Ещё один вариант реализации задачи. Данный вариант является более оптимизированным по сравнению с предыдущим
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
import com.sun.corba.se.impl.interceptors.SlotTableStack; import java.io.PrintStream; public class main { public static boolean Parsing(String rowset) { int checkBracket = 0; for (int i = 0; i < rowset.length(); i++) { String oneSymbol = rowset.substring(i, i + 1); if (oneSymbol.equals("(")) { checkBracket++; } else { checkBracket--; } if (checkBracket < 0) { return false; } } return checkBracket==0; } public static void main(String[] args) { String var = "((("; System.out.println(Parsing(var)); } } |
Таким нехитрым образом мы разобрались с темой: «Проверка на правильную скобочную последовательность на Java»!