Java 中的平衡括号

17 Mar 2025 | 5 分钟阅读

平衡括号问题是一个常见的编程问题,也称为平衡方括号。面试官经常提出这个问题,要求我们验证给定字符串中的方括号是否平衡。

诸如“ ( ”、“ ) ”、“ [ ”、“ ] ”、“ { ”和“ } ”之类的字符被视为方括号。

如果开括号出现在相应闭括号的左侧,则称一组括号为匹配对。

如果字符串中的括号不匹配,则括号对不平衡。

同样,包含非括号字符(如 a-z、A-Z、0-9 以及 #、 $、 @ 等其他特殊字符)的字符串也被视为不平衡。

Balanced Parentheses in Java

示例 "{[(])}"

这是一个不平衡的输入字符串,因为圆括号对“()”包围了一个不平衡的闭合方括号“]”,而方括号对“[]”包围了一个不平衡的开圆括号“(”。

一个包含括号的字符串如果满足以下条件,则称其为平衡的:

  • 每个相应的开括号都存在一个匹配的闭括号并位于其右侧。
  • 平衡括号内部包含的括号也应该是平衡的。
  • 它不应包含任何非括号字符。

注意 1:null 被视为平衡的。

注意 2:空字符串被视为平衡的。

算法(双端队列)

  1. 首先,我们声明一个字符栈。
  2. 将输入字符串转换为字符数组。
  3. 遍历输入字符串(通过遍历字符数组)。
    1. 如果当前字符是起始括号('(' 或 '{' 或 '['),则将其压入栈。
    2. 如果当前字符是闭合括号,则从栈中弹出。如果弹出的字符与起始括号不匹配,则括号不平衡。
  4. 遍历完成后,如果栈中还有起始括号,则括号不平衡。

我们可以使用简单的 for 循环、双端队列和栈来实现平衡括号的代码。

BalancedParenthesesExample1.java

输出

Balanced Parentheses in Java

BalancedParenthesesExample2.java

输出

Balanced Parentheses in Java

BalancedParenthesesExample3.java

输出

Balanced Parentheses in Java