首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >给定一个括号字符串,返回正确匹配的括号计数。

给定一个括号字符串,返回正确匹配的括号计数。
EN

Code Review用户
提问于 2018-02-03 19:27:32
回答 1查看 15.7K关注 0票数 1

如果字符串中的每个开口括号都可以与后面的结束括号配对,则认为括号字符串是正确匹配的,反之亦然。例如,“(())()”是正确匹配的,而“)(”和“(”不是“)(例如,”(“)”可以通过在末尾添加两个尾括号来正确匹配,因此您将返回2。

给定一个由括号组成的字符串,编写一个函数bracketMatch,它以一个括号字符串作为输入,并返回您需要添加到输入中以使其正确匹配的最少括号数。

我的方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 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)有没有比我的更好的方法?

参考文献

EN

回答 1

Code Review用户

发布于 2018-07-15 11:35:46

我们不需要关闭变量,如果我们可以减少1打开时,近括号是找到。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class MatchBrackets{

    public static int matchBrackets(String brackets){

      int open = 0;
      int count =0;

     for(int i=0;i<brackets.length();i++){
        if(brackets.charAt(i)=='('){
        open++;
        }else if(brackets.charAt(i)==')'){
         open--;
        }
        if(open<0){
        count++;
        open++;
     }
  }
  return count+open;
}

  public static void main(String[] args) {

  System.out.println(matchBrackets("())("));
  System.out.println(matchBrackets("(((())))"));
  System.out.println(matchBrackets("))))"));
}}
票数 3
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/186719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文