//验证输入的表达式是不是正确的四则运算,不考虑负数 bool isValidExpression(const string& expression) { stack<char> s; vector<char> v; for(int i=0; i<expression.size(); i++) { switch(expression[i]) { case '(': s.push('(');//'('入栈 break; case ')': if(s.empty()) { return false;//')'多于'(',失败 }else{ s.pop();//'('出栈 } break; case '+': case '-': case '*': case '/': v.push_back(expression[i]);//加入操作符号 break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': if(v.size()>0 && (v.back()>='0' && v.back()<='9'))//连续数字只加入一个数字 { }else{ v.push_back(expression[i]); } break; default: return false;//录入非法字符 break; } } if(!s.empty() || v.size()==0)//栈不为空或者向量为空则返回false { return false; } for(int i=0; i<v.size(); i++) { if(i%2==0 && v[i]<'0' && v[i]>'9')//偶数位为数字 { return false; } if(i%2==1 && v[i]!='+' && v[i]!='-' && v[i]!='*' && v[i]!='/')//奇数位为符号 { return false; } } return true; }
转载于:https://www.cnblogs.com/zjhnl/archive/2012/09/28/2706926.html