//验证输入的表达式是不是正确的四则运算,不考虑负数
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;
}
小米笔试:验证输入的表达式是不是正确的四则运算,不考虑负数
最新推荐文章于 2022-05-24 21:45:46 发布