搜索
首页Javajava教程使用Java的最长平衡括号前缀的长度

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

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热工具

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用