21xrx.com
2024-12-23 00:52:38 Monday
登录
文章检索 我的文章 写文章
Java实现最大括号深度求和
2023-06-17 07:18:39 深夜i     --     --
Java 括号

在程序设计中,有时需要对字符串中的括号进行处理并进行一些操作,例如计算最大括号深度,并对括号对进行匹配。本文将介绍如何使用Java实现最大括号深度求和,并且给出相应的代码案例。

算法思路

  最大括号深度指所有括号嵌套层数的最大值,例如“(()(()))”,最大括号深度为3。实现的思路是采用栈的方式,每当遇到左括号“(”时,将其压栈;每当遇到右括号“)”时,将栈中的元素弹出,得到它上一个未匹配的括号对左括号,两个括号的深度之和即为当前括号对的深度。更新最大深度值。最后返回最大深度,即为答案。

代码实现

  下面是Java代码实现:

public int maxDepth(String s) {

  int maxDepth = 0, curDepth = 0;

  Stack stack = new Stack<>();

  for (char ch : s.toCharArray()) {

    if (ch == '(') {

      stack.push(ch);

      curDepth++;

    } else if (ch == ')') {

      if (!stack.isEmpty()) {

        stack.pop();

        curDepth--;

      } else

        curDepth = 0;

    }

    maxDepth = Math.max(maxDepth, curDepth);

  }

  return maxDepth;

}

解释一下,我们设置两个变量maxDepth和curDepth,maxDepth存储最大深度值,curDepth记录当前遍历到字符的深度值,初始为0。遍历字符串时,如果遇到左括号,将其压栈并且curDepth++,否则如果遇到右括号,将栈中元素弹出并且curDepth--。每次计算出当前深度值后,更新最大深度值maxDepth。最后返回maxDepth即为答案。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复