石 *新 202314160221
问题:
解题思路:
- 运用stack存入左括号
- 当发现当前的str[i]为任意一种右括号的时候,看栈顶是否匹配,如果匹配则将当前栈顶退出,否则直接输出erroe 退出程序
- 如何最后判断栈为空,则说明匹配成功,否则匹配不成功
流程图:
执行代码:
#include<iostream>
#include<cstring>
using namespace std;
const int n=1e6;
char stack[n];
char str[n];
int main()
{ //
int hh=0,tt=0;
cin >> str;
for(int i=0;i<strlen(str);i++)
{
if(tt!=hh)
{
if(str[i]==')')
{
if(stack[tt-1]=='(')
tt--;
else
cout << "ERROE"<<i << endl;
}
else if(str[i]==']')
{
if(stack[tt-1]=='[')
tt--;
else
cout << "ERROE"<< endl;
}
else if(str[i]=='}')
{
if(stack[tt-1]=='{')
tt--;
else
cout << "ERROE"<< endl;
}
else
{
stack[tt++]=str[i]; //进栈 不执行的
}
}
else
stack[tt++]=str[i];//进栈
}
if(tt==hh)
cout << "yes";
else
cout << "error" ;
cin.get();
cin.get();
}
运行结果截图: