21xrx.com
2024-11-22 09:44:32 Friday
登录
文章检索 我的文章 写文章
Java实现最大括号深度函数
2023-06-11 14:50:36 深夜i     --     --
Java 括号深度

括号深度是指一个字符串中最大层数嵌套括号的深度。例如字符串 "( ( ) ( ( ) ) )"的深度是 3。

现在,我们要用Java实现一个函数,来求出一个字符串的最大括号深度。下面是代码:


import java.util.Stack;

public class MaxDepth {

  public static int maxDepth(String s) {

    int maxDepth = 0;

    Stack stack = new Stack ();

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

      if (s.charAt(i) == '(') {

        stack.push(s.charAt(i));

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

      } else if (s.charAt(i) == ')') {

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

          stack.pop();

        } else

          return -1; // invalid input

        

      }

    }

    if (!stack.isEmpty())

      return -1; // invalid input

    

    return maxDepth;

  }

  public static void main(String[] args) {

    String s = "(())";

    int max = maxDepth(s);

    System.out.println(max); // output: 2

  }

}

在这个代码中,我们用一个栈来模拟括号的匹配过程。当遇到左括号时,入栈并更新最大深度。当遇到右括号时,判断栈是否为空以及栈顶是否为左括号,匹配成功则弹出栈顶元素。最后,检查栈是否为空,若不为空则说明有未匹配的括号,返回-1表示无效输入。

  
  

评论区

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