1. 括号匹配 【问题描述】一个表达式,判断括号是否匹配 【输入形式】字符串 【输出形式】匹配或不匹配 C语言实现
时间: 2024-10-21 08:10:03 浏览: 50
【问题描述】括号匹配算法是一种常见的文本处理问题,通常用于检查给定的数学表达式、函数调用等中的圆括号、花括号和方括号是否正确配对。目的是验证这些符号是否有适当的开始和结束,并保持平衡。
【输入形式】例如:"(hello)[world]{test}"
【输出形式】如果所有括号都是成对出现并关闭的,则返回"匹配";否则返回"不匹配"。
【C语言实现】可以使用栈数据结构来实现这个功能。下面是简单的C语言代码示例:
```c
#include <stdbool.h>
#include <stdio.h>
#include <string.h>
bool isParenthesesMatched(char* str) {
stack<char> brackets;
const char* pattern = "({[})";
for (char c : str) {
if (c == '(' || c == '{' || c == '[') {
brackets.push(c);
} else if (brackets.empty() || pattern[brackets.top()] != c) {
return false; // 找不到对应的闭合括号
} else {
brackets.pop(); // 匹配到闭合括号,移除栈顶元素
}
}
return brackets.empty(); // 如果栈为空,表示所有的括号都已匹配
}
int main() {
char str[] = "(hello)[world]{test}";
if (isParenthesesMatched(str)) {
printf("匹配\n");
} else {
printf("不匹配\n");
}
return 0;
}
```
在这个例子中,遍历字符串,当遇到开括号时入栈,遇到闭括号时检查栈顶是否匹配,如果不匹配或者栈为空则返回false。最后,如果栈为空,则说明所有括号都匹配了。
阅读全文