在编程中,括号匹配是一个常见的问题。它涉及到检查给定字符串中的括号是否正确配对。例如,表达式 “(a + b) * (c - d)” 中的括号是正确配对的,而表达式 “((a + b) * (c - d)” 则不是正确配对的。在本文中,我将向您展示如何使用C#编写一个括号匹配算法。
算法思路:
- 创建一个栈(stack),用于存储左括号。
- 遍历输入的字符串,逐个检查字符。
- 如果遇到左括号(‘(’,‘{‘或’[’),将其压入栈中。
- 如果遇到右括号(‘)’,‘}‘或’]’),检查栈是否为空。如果为空,则说明右括号没有对应的左括号,括号不匹配,算法结束。如果栈不为空,则将栈顶的左括号弹出。
- 继续遍历字符串,直到结束。
- 遍历结束后,检查栈是否为空。如果栈为空,则说明所有括号都已正确匹配,括号匹配成功。否则,括号不匹配。
下面是用C#实现括号匹配算法的示例代码:
using System