您的位置:首页 > 其它

华为机试 - 判断if语句括号是否匹配

2014-08-15 15:49 155 查看
编程的时候,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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: