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

来源:互联网 发布:马油扫码软件 编辑:程序博客网 时间:2024/05/17 02:23

编程的时候,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();elsecharStack.push(ifStatement[i]);}if(ifStatement[i]=='(')leftNum++;if(ifStatement[i]==')')rightNum++;}}if(!charStack.empty())cout<<"WRONG"<<' ';elsecout<<"RIGHT"<<' ';cout<<leftNum<<' '<<rightNum<<endl;system("pause");return 0;}

0 0
原创粉丝点击