Дана строка, состоящая из кронштейнов, вернуть графу кронштейнов, которые правильно подобраны


Строку в скобках является правильно подобранное если каждой открывающей скобки в строке может быть в паре с последующей закрывающей скобкой, и наоборот. Например, “(())()” правильно подобраны, в то время как “)(“ и “((” не. Например, “((” может стать правильно подобранное, добавив две закрывающие скобки в конце, так что вы вернетесь 2.

Дана строка, которая состоит из кронштейнов, написать bracketMatch функцию, которая принимает строку кронштейн в качестве входных данных и возвращает минимальное число в скобках нужно добавить на вход для того, чтобы сделать его правильно подобраны.

Мой подход:

 import java.io.*;
 import java.util.*;

 class Solution {

  static int bracketMatch(String text) {
    // your code goes here
    //Maintain 2 variables
    int ob = 0;//ob
    int cb = 0;//cb
    int wb= 0;//wb

    for( int i = 0; i < text.length(); i++ )
      {
          //Check for openBracket
          if( text.charAt(i) == '(')
             ob++;

          //Check for closeBracket
          if( text.charAt(i) == ')')
             cb++;

          //Check if closeBracketct > openBracketct
          if( cb > ob )
          { 
            wb++;
            ob = 0;
            cb = 0;
          }
      }
    return (wb + (ob - cb));
  }

  public static void main(String[] args) {
    //System.out.println(bracketMatch("())("));
    //System.out.println(bracketMatch("(((())))"));
    System.out.println(bracketMatch("(((())"));
  //  System.out.println(bracketMatch("))))"));
  }

}

У меня есть несколько вопросов по поводу кода выше:

1) Как я могу оптимизировать этот код?

2) я использую слишком много переменных?

3) Есть ли лучший подход, чем у меня?

Ссылка



Комментарии