检查字符串中括号配对是否正确C语言
时间: 2024-10-22 17:24:34 浏览: 28
在 C 语言中,检查字符串中括号(包括圆括号 ()、方括号 [] 和花括号 {})是否配对正确通常使用栈数据结构。下面是一个简单的函数实现示例:
```c
#include <stdio.h>
#include <stdbool.h> // 引入 bool 类型
bool is_valid_brackets(char brackets[], int n) {
int top = -1; // 初始化栈顶指针为 -1,表示栈为空
stacksize_t stack_size = sizeof(brackets)/sizeof(brackets[0]);
for (int i = 0; i < n; ++i) {
switch (brackets[i]) {
case '(':
case '[':
case '{':
// 当遇到左括号时,压入栈中
top++;
break;
case ')':
case ']':
case '}':
// 当遇到右括号时,尝试弹出栈顶元素
if (top == -1 || brackets[top] != brackets[i]) {
// 如果栈为空或者当前右括号与上一个左括号不匹配,则返回 false
return false;
}
top--; // 已匹配成功,栈顶减一
break;
default:
// 对于非括号字符,跳过
continue;
}
}
// 检查栈是否为空,如果为空则括号配对正确
return top == -1;
}
// 示例用法
int main() {
const char brackets[] = "{[(])}";
int n = strlen(brackets);
bool isValid = is_valid_brackets(brackets, n);
if (isValid)
printf("括号配对正确\n");
else
printf("括号配对错误\n");
return 0;
}
```
这个程序首先定义了一个函数 `is_valid_brackets`,它接收一个包含括号的字符串和其长度作为参数。通过遍历字符串,每当遇到左括号就压入栈中,遇到右括号时检查栈顶是否存在对应的左括号。如果在整个过程中栈始终为空或者最后栈不为空,说明括号配对不完整,函数返回 `false`;否则返回 `true`。
阅读全文