0
点赞
收藏
分享

微信扫一扫

用数组实现括号匹配

一天清晨 2022-04-02 阅读 101
c++

一般来说都是用栈实现的 下面是用数组实现 供参考

#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;
}

 上图是用栈写代码的流程图 用数组其实也是一样的思路

举报

相关推荐

0 条评论