@starnightstars

Как посчитать число цифр в скобках, предварительно проверенных на сбалансированность?

Дана строка, содержащая цифры, скобки и другие символы. Проверить, сбалансирована ли строка по скобкам, и, если это так, то найти, сколько цифр строки находится внутри скобок.
Например, в строке «if (d == 0) x = -b / (2 * a);» две цифры внутри скобок. Вопрос в том, как создать условие, чтобы находились цифры и считалось их количество и нужен ли в данном случае цикл
import java.util. *
public class Main
{
   public static void main(String[] args) {
     String s =  "{(d == 0)} x = [-b / (2 * a)]";
     String str = new String("");
     for(int i = 0; i < s.length(); i++) // Перебор всех символов строки s
        if("()[]{}".indexOf(s.charAt(i)) >= 0) // Если символ строки s – скобка, то добавляем его в str
            str += s.charAt(i); 
            
     int len = 0;
     do { // Повторяем многократно
          len = str.length(); // Длина строки до изменений
          str = str.replace("()", ""); // Удаляем пару круглых скобок ()
          str = str.replace("[]", ""); // Удаляем пару квадратных скобок []
          str = str.replace("{}", ""); // Удаляем пару фигурных скобок {}
     }   while(len != str.length()); // Повторяем, пока строка меняется
     
       System.out.print("Строка " + s);
        if (str.length() == 0) // Если в строке не осталось скобок
    System.out.println(" сбалансирована по скобкам");
        else // Если в строке что-то осталось
    System.out.println(" не сбалансирована по скобкам");
    
    for(int numbers = 0; numbers >= 0; numbers++){
        if(numbers )
    }
}
}
  • Вопрос задан
  • 94 просмотра
Пригласить эксперта
Ответы на вопрос 1
wataru
@wataru
Разработчик на С++, экс-олимпиадник.
Цикл нужен. Еще нужен счетчик открытых скобок.
Проходитесь по строке, если скобка открывается - увеличивайте счетчик скобок. если закрывается - у меньшайте. Если текущий символ - цифра, то прибавляйте к ответу, если счетчик отркытых скобок положителен.

Если счетчик открытых скобок стал где-то отрицательным, или в конеце цикла он не ноль - то строка не сбалансирована.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы