首页 > Java > java教程 > 使用Java的最长平衡括号前缀的长度

使用Java的最长平衡括号前缀的长度

Patricia Arquette
发布: 2025-02-07 11:55:10
原创
170 人浏览过

Length of longest balanced parentheses prefix using Java

本文说明了如何使用Java查找最长平衡括号前缀的长度。首先,我们将使用几个示例理解问题,然后学习两种不同的方法来寻找问题。

问题解释

在这里,我们给出一个包含括号的字符串,我们需要从字符串中找到平衡的括号集的长度。换句话说,如果有所有开口括号

“(”(“

”),那么我们将其称为平衡。 从字符串的开头,前缀定义平衡集。例如,对于括号集'(())()',仅'(())'。 >输入和输出方案

为了更好地理解,让我们看一些输入和输出方案。

如果输入字符串为

“(()”

,平衡括号前缀为

()
    ,则长度为2。
  • 如果输入字符串为”(((())))(((“),平衡括号前缀为((()(()(()(()))))>所以长度为8。
  • >
  • 如果输入字符串为“(()()())()()”,平衡的括号前缀为(()()()()),则长度是6。
  • 最长平衡括号前缀的长度可以找到如下: 使用堆栈数据结构
  • 计数打开和关闭括号

使用堆栈数据结构
  • >可以使用堆栈。如果从堆栈中找到开口括号'
  • ',请将其推到堆栈上。如果找到闭合括号,请弹出堆栈,并将计数器变量增加2(平衡均值的长度您得到的是2。)继续执行此操作,并在变为空堆栈时返回计数器变量
  • >算法

算法如下:

如果字符为

>,将其推到堆栈上。> 如果

字符为

,则会弹出堆栈。
<code><p><b>ステップ1:</b>スタックとカウンタを初期化します。</p>
<p><b>ステップ2:</b>文字列の各文字を反復処理します。</p></code>
登录后复制
登录后复制
    >将计数器增加2。
  • 检查堆栈是否为空。
  • 如果是空的,则结束循环。
  • >
  • 步骤3:最后返回计数器。
  • >示例

    <code><p><b>ステップ1:</b>スタックとカウンタを初期化します。</p>
    <p><b>ステップ2:</b>文字列の各文字を反復処理します。</p></code>
    登录后复制
    登录后复制

    输出

    输入字符串是:((())((() 最长平衡括号前缀的长度为:6

    >

    计数打开和关闭括号

    此方法使用两个变量:计数和长度。如果字符为“

    ”(

    >”,则从字符串中获得1;如果字符计数为1;如果字符为“”,则减少数量为1,而增量长度则增加2。检查计数是否为0,如果是0,则退出循环并返回长度。 >示例

    import java.util.Stack;
    
    public class Example {
       public static int longestBalancedPrefix(String s) {
          Stack<Character> stack = new Stack<>();
          int count = 0;
          for (int i = 0; i < s.length(); i++) {
             char c = s.charAt(i);
             if (c == '(') {
                stack.push(c);
             } else if (c == ')') {
                if (!stack.isEmpty()) {
                   stack.pop();
                   count += 2;
                }
             }
             if (stack.isEmpty()) {
                break;
             }
          }
          return count;
       }
    
       public static void main(String[] args) {
          String s = "((())(((";
          int length = longestBalancedPrefix(s);
          System.out.println("入力文字列は:" + s);
          System.out.println("最長のバランスの取れた括弧のプレフィックスの長さは:" + length);
       }
    }
    登录后复制
    输出

    输入字符串为((()()())((()))) 最长平衡的括号前缀长度为8

以上是使用Java的最长平衡括号前缀的长度的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
java可以做为web的后端吗?
来自于 1970-01-01 08:00:00
0
0
0
安装JAVA
来自于 1970-01-01 08:00:00
0
0
0
无法安装java
来自于 1970-01-01 08:00:00
0
0
0
java - php调取webservice的map类型,如果封装?
来自于 1970-01-01 08:00:00
0
0
0
这个是Java语言的吗
来自于 1970-01-01 08:00:00
0
0
0
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板