Для решения этой задачи вам необходимо использовать стек данных и обходить входную строку посимвольно. В Java для работы со стеком можно использовать класс Stack из пакета java.util.
Перед тем, как начать обходить строку, создайте пустой стек:
Stack<Character> stack = new Stack<>();
Затем, для каждого символа в строке, выполните следующие действия:
1. Если символ - открывающая скобка, то поместите его в стек.
2. Если символ - закрывающая скобка, то проверьте, есть ли открывающая скобка в стеке. Если стек пустой или символ на вершине стека не является открывающей скобкой для текущей закрывающей скобки, то скобки не сбалансированы. В этом случае вы можете вернуть флаг "несбалансированность" или бросить исключение.
3. Если символ - цифра, то увеличьте счетчик числа цифр в скобках.
4. После обхода всех символов, проверьте, пуст ли стек. Если стек не пуст, это означает, что в строке есть незакрытые открывающие скобки, и вы можете вернуть флаг "несбалансированность".
Вот полный код решения ваших задач:
import java.util.Stack; public class BalancedParentheses { public static void main(String[] args) { String input = "((2+3) * (4+5))"; System.out.println(countDigitsInBalancedParentheses(input)); // Выведет: 8 } public static int countDigitsInBalancedParentheses(String input) { Stack<Character> stack = new Stack<>(); int count = 0; for (int i = 0; i < input.length(); i++) { char ch = input.charAt(i); if (ch == '(') { stack.push(ch); } else if (ch == ')') { if (stack.isEmpty() || stack.peek() != '(') { System.out.println("Скобки не сбалансированы"); return -1; } else { stack.pop(); } } else if (Character.isDigit(ch) && !stack.isEmpty()) { count++; } } if (!stack.isEmpty()) { System.out.println("Незакрытые открывающие скобки"); return -1; } return count; } }
В данном примере входная строка ((2+3) * (4+5)) проверяется на сбалансированность скобок и вычисляется количество цифр, находящихся внутри сбалансированных скобок. В результате выполнения кода выведется число 8, так как внутри скобок находятся две цифры 2 и 3, а также две цифры 4 и 5.
Надеюсь, что эта информация будет полезной и поможет вам в решении вашей задачи!