21xrx.com
2024-12-22 23:27:55 Sunday
登录
文章检索 我的文章 写文章
Java实现最大括号深度函数的方法及示例代码
2023-06-12 15:10:06 深夜i     --     --
Java 括号匹配 堆栈

在编程领域中,有些问题需要用到括号匹配算法,其中一个常见的问题是求括号的最大深度。在本文中,我们将介绍如何使用Java编写一个函数,计算给定字符串中括号的最大深度,并提供示例代码。让我们开始吧!

实现方法

我们可以使用堆栈数据结构来实现括号的最大深度函数。遍历字符串中的每一个字符,如果遇到左括号,则将其入栈,如果遇到右括号,则将其与栈顶的左括号匹配,得到当前括号的深度,统计所有括号深度的最大值即为结果。

示例代码

下面是一个简单的Java函数,实现括号的最大深度功能:


public static int maxDepth(String s) {

  Stack stack = new Stack<>();

  int maxDepth = 0;

  for (int i = 0; i < s.length(); i++) {

    char c = s.charAt(i);

    if (c == '(') {

      stack.push(c);

      maxDepth = Math.max(maxDepth, stack.size());

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

      if (!stack.isEmpty() && stack.peek() == '(') {

        stack.pop();

      } else

        return -1; // 匹配失败

    }

  }

  if (!stack.isEmpty()) 返回-1

  

  return maxDepth;

}

该函数的时间复杂度为O(n),空间复杂度为O(n)。

示例

我们使用一个字符串进行测试,该字符串中包含了不同深度的括号:


String s = "((()))((((()))))()()()";

int depth = maxDepth(s);

System.out.println("括号的最大深度为:" + depth);

输出结果为:


括号的最大深度为:6

结论:该字符串中最大括号深度为6。

关键词

Java、括号匹配、堆栈。

  
  

评论区

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