c#数据结构 输入一个表达式判断括号是否配对
时间: 2024-12-15 17:23:07 浏览: 4
在C#中,为了检查一个字符串表达式的括号是否配对,你可以使用栈数据结构来辅助判断。栈是一种后进先出(LIFO)的数据结构,非常适合处理这类问题,因为它可以依次将左括号入栈,遇到右括号时则弹出栈顶元素与之匹配。
以下是基本步骤:
1. 定义一个空的栈,用于存放左括号。
2. 遍历输入的表达式字符串,对于每个字符:
- 如果字符是左括号(如'('),将其压入栈中。
- 如果字符是右括号(如')'):
- 判断栈是否为空:
- 若为空,则表示缺少左括号,返回false(因为括号未配对)。
- 否则,弹出栈顶元素(应为对应的左括号),继续遍历。
3. 遍历结束后,如果栈为空,说明所有括号都已配对,返回true;否则返回false。
下面是一个简单的示例代码片段(假设有一个名为`IsParenthesesBalanced`的方法):
```csharp
using System;
using System.Collections.Generic;
public class StackBasedMatcher {
public static bool IsParenthesesBalanced(string expression) {
var stack = new Stack<char>();
string validPairs = "(){}[]";
foreach (char c in expression) {
if (validPairs.Contains(c)) {
stack.Push(c);
} else if (stack.Count > 0 && validPairs.Contains(stack.Peek()) && c == ')' || c == ']' || c == '}') {
stack.Pop();
} else {
return false; // 匹配失败
}
}
// 检查剩余栈是否为空,若为空则括号配对,否则不配对
return stack.Count == 0;
}
public static void Main(string[] args) {
Console.WriteLine(IsParenthesesBalanced("(){}[]")); // 输出 true
Console.WriteLine(IsParenthesesBalanced("(]")); // 输出 false
}
}
```
阅读全文