Java Program to Determine Whether a Given String of Parentheses (Multiple Types) is Properly Nested

2025年3月26日 | 阅读 3 分钟

判断一个包含多种类型括号的字符串是否正确嵌套,需要检查每个开括号((、{、[)是否都有匹配且正确放置的闭括号 ()、}、])。

正确嵌套确保了括号的平衡和正确的顺序。这在编程语言语法检查和数学表达式求值等应用中至关重要。解决此问题的一种常见方法是使用堆栈,堆栈有助于管理嵌套结构并验证括号是否按正确顺序匹配。

如果字符串 S 满足以下任一条件,则该字符串 S(由 N 个字符组成)被认为是充分嵌套的:

  1. 空字符串:字符串 S 为空。
  2. 基本正确嵌套:字符串 S 的结构为 (U)、[U] 或 {U},其中 U 是一个正确嵌套的字符串。
  3. 正确嵌套字符串的连接:字符串 S 可以分成两个子字符串 V 和 W,其中 V 和 W 都是正确嵌套的字符串。

例如

  • 字符串 {[()()]} 是正确嵌套的。
  • 字符串 ([)()] 不是正确嵌套的。

算法

步骤 1:初始化一个空的堆栈,用于存储开括号。

步骤 2:遍历字符串中的每个字符:如果它是开括号((、{、[),则将其添加到堆栈。如果字符是闭括号()、}、])

  • 检查堆栈是否为空。如果为空,则返回 false(没有匹配的开括号)。
  • 否则,从堆栈中弹出顶部元素,并确保它与当前闭括号对应的开括号匹配。如果不匹配,则返回 false。

步骤 3:如果字符不是有效的括号,则返回 false。

步骤 4:如果堆栈为空,则返回 true(所有开括号都已匹配)。如果堆栈不为空,则返回 false(某些开括号未匹配)。

步骤 5:根据最终的堆栈检查结果返回结果。

让我们在 Java 程序中实现上述方法。

文件名:ParenthesesChecker.java

输出

 
String: () is properly nested: true
String: {[()]} is properly nested: true
String: {[(])} is properly nested: false
String: {{[[(())]]}} is properly nested: true
String: ([)] is properly nested: false
String:  is properly nested: true   

下一主题抽象与封装