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