使用数组解决括号匹配问题

#include<stdio.h>
bool compare()
{
	char  str1[10] = { '{','{','(',')','}','}' };    //准备判定的数组
	char  str2[10] = {};   //存放左括号的数组
 
	int top2 = -1;      //标记str2数组的下标
	for (int i = 0; i < 6; i++)          //循环6个待判定的括号
	{
		if (str1[i] == '{' || str1[i] == '(' || str1[i] == '[')   //判断是否为左括号
		{
			top2++;
			str2[top2] = str1[i];
		}
		else                                               
		{
			if (top2 == -1)                           //判断左括号数组是否为空 为空的话右括号没得匹配
			{
				return false;
			}
			else                                    //判断是否匹配
			{
				if (str1[i] == '}' && str2[top2] != '{')
					return false;
				if (str1[i] == ')' && str2[top2] != '(')
					return false;
				if (str1[i] == ']' && str2[top2] != '[')
					return false;
				top2--;                      //匹配完逻辑上去除左括号里的数
			}
		}
	}
	if (top2 != -1)                         //判断左括号数组是否为空 如果全部匹配完 还剩下左括号没得匹配的
		return false;
	return true;
}
int main()
{
	bool ret;
	ret = compare();             //接收函数返回值
	if (ret)
		printf("succeed");         //成功
	else
		printf("fail");          //失败
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值