首頁 >Java >java教程 >使用Java的最長平衡括號前綴的長度

使用Java的最長平衡括號前綴的長度

Patricia Arquette
Patricia Arquette原創
2025-02-07 11:55:10165瀏覽

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,則退出循環並返回長度。 >示例

    <code class="language-java">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);
       }
    }</character></code>
    輸出

    輸入字符串為((()()())((()))) 最長平衡的括號前綴長度為8

以上是使用Java的最長平衡括號前綴的長度的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn