您现在的位置是:首页 >技术交流 >c/c++蓝桥杯经典编程题100道(18)括号匹配网站首页技术交流
c/c++蓝桥杯经典编程题100道(18)括号匹配
简介c/c++蓝桥杯经典编程题100道(18)括号匹配
括号匹配
目录
一、题型解释
括号匹配是验证字符串中的括号是否正确闭合的问题。常见题型:
-
基础匹配:验证字符串中的
()
、[]
、{}
是否成对且顺序正确。 -
包含其他字符:字符串中混合其他字符(如字母、数字),需跳过非括号字符。
-
最长有效括号子串:找到字符串中最长的有效括号子串长度。
-
最小添加次数:计算使括号匹配所需最少添加的括号数量。
二、例题问题描述
例题1:输入 "()[]{}"
,输出 true
(所有括号正确匹配)。
例题2:输入 "{[()]}"
,输出 true
(嵌套括号正确匹配)。
例题3:输入 "(]"
,输出 false
(括号类型不匹配)。
例题4:输入 "()(()"
,输出最长有效子串长度 2
。
三、C语言实现
解法1:栈匹配法(难度★)
通俗解释:
-
像叠盘子一样,遇到左括号“放入盘子”,遇到右括号时检查最上面的盘子是否匹配。
c
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#define MAX_SIZE 10000
bool isValid(char *s) {
char stack[MAX_SIZE]; // 用数组模拟栈
int top = -1; // 栈顶指针
for (int i = 0; s[i] != '