3. 设计一个C#程序,使用栈(Stack)来实现一个简单的括号匹配检查器。程序应接受一个包含括号(圆括号()、方括号[]和花括号{})的字符串作为输入,并检查括号是否正确匹配和嵌套。如果括号匹配,输出“匹配成功”,否则输出“匹配失败”。
时间: 2024-12-13 21:19:09 浏览: 4
在C#中,你可以创建一个简单的栈(Stack)来实现括号匹配检查。这里是一个基本的步骤:
1. 创建一个辅助类`BracketPair`,用于存储每种类型的括号及其对应的结束符号:
```csharp
class BracketPair
{
public char Open { get; set; }
public char Close { get; set; }
public BracketPair(char open, char close)
{
Open = open;
Close = close;
}
}
```
2. 使用一个`Stack<BracketPair>`来保存打开的括号。遍历输入字符串,遇到开括号就压入栈,遇到闭括号则检查栈顶元素的匹配情况:
```csharp
void CheckBrackets(string input)
{
Stack<BracketPair> stack = new Stack<BracketPair>();
string[] pairs = { "(", "[", "{" };
string[] closes = { ")", "]", "}" };
foreach (char c in input)
{
if (pairs.Contains(c))
{
stack.Push(new BracketPair(c, closes[pairs.IndexOf(c)]));
}
else if (c != '\0' && stack.Count > 0 && c == closes[stack.Peek().Open])
{
stack.Pop();
}
else
{
// 如果遇到关闭括号但栈为空,或者当前闭括号与栈顶不匹配,则返回"匹配失败"
return Console.WriteLine("匹配失败");
}
}
// 检查栈是否为空,如果为空表示所有括号都已匹配
if (stack.Count == 0)
{
Console.WriteLine("匹配成功");
}
else
{
Console.WriteLine("匹配失败");
}
}
```
3. 调用`CheckBrackets`函数并传入用户输入的字符串进行检测:
```csharp
string inputStr = "[(]{(())}";
CheckBrackets(inputStr);
```
这个程序会在控制台打印出括号匹配的结果。
阅读全文