编程的时候,if条件里面的“(”、“)”括号经常出现不匹配的情况导致编译不过,请编写程序检测输入一行if语句中的圆括号是否匹配正确。同时输出语句中出现的左括号和右括号数量,如if((a==1)&&(b==1))是正确的,而if((a==1))&&(b==1))是错误的。注意if语句的最外面至少有一对括号。提示:用堆栈来做。
输入:if((a==1)&&(b==1))
输出:RIGTH 3 3
输入:if((a==1))&&(b==1))
输出:WRONG 3 4
#include <iostream>
#include <stack>
#include <string>
using namespace std;
int main()
{
string ifStatement;
cin>>ifStatement;
stack<char> charStack;
int leftNum=0,rightNum=0;
for (size_t i=0;i<ifStatement.size();i++)
{
if(ifStatement[i]=='('||ifStatement[i]==')')
{
if(charStack.empty())
charStack.push(ifStatement[i]);
else
{
char temp=charStack.top();
if (temp=='('&&ifStatement[i]==')')
charStack.pop();
else
charStack.push(ifStatement[i]);
}
if(ifStatement[i]=='(')leftNum++;
if(ifStatement[i]==')')rightNum++;
}
}
if(!charStack.empty())
cout<<"WRONG"<<' ';
else
cout<<"RIGHT"<<' ';
cout<<leftNum<<' '<<rightNum<<endl;
system("pause");
return 0;
}