Maison >Java >javaDidacticiel >Longueur du préfixe de parenthèses les plus longs en utilisant Java
Cet article explique comment utiliser Java pour trouver la longueur des parenthèses les plus longues préfixes . Tout d'abord, nous comprendrons le problème en utilisant plusieurs exemples, puis apprendrons deux approches différentes pour la rechercher.
Explication du problème"(" ")" , alors nous l'appelons équilibré. Les préfixes définissent un ensemble équilibré depuis le début d'une chaîne. Par exemple, pour l'ensemble des parenthèses '(()) ()', seul '(())' est considéré.
Scénarios d'entrée et de sortie
Si la chaîne d'entrée est
en utilisant des structures de données de pile
' à partir de la pile, poussez-la sur la pile. Si vous trouvez des parenthèses de clôture, éclatez la pile et incrémentez la variable de compteur par 2 (l'équilibre de la longueur de la paire Vous obtenez est 2.) Continuez à faire cela et renvoyez une variable de comptoir lorsqu'elle devient une pile vide. algorithme
L'algorithme est le suivant:Si le caractère est
<code><p><b>ステップ1:</b>スタックとカウンタを初期化します。</p> <p><b>ステップ2:</b>文字列の各文字を反復処理します。</p></code>(
<code><p><b>ステップ1:</b>スタックとカウンタを初期化します。</p> <p><b>ステップ2:</b>文字列の各文字を反復処理します。</p></code>
sortie
La chaîne d'entrée est: (()) ((( La longueur du préfixe des parenthèses les plus longues est: 6compter l'ouverture et la fermeture des parenthèses
" de la chaîne, le nombre d'incrément de 1; si le caractère est ") ", la diminution du nombre de 1 et de la longueur d'incrément par 2. Vérifiez si le nombre est 0, s'il est 0, quittez la longueur de boucle et de retour. Exemple
<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>sortie
La chaîne d'entrée est (()) ()) (())) La longueur des parenthèses les plus longues équilibrées est de 8
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!