思路:
从题目中的知道表达式中只小括号,因此要简单很多,我们只需要判断左括号数量和右括号数量是否相等就行。但是需要注意一点的是,如果括号出现的位置不对表达式也有问题,虽然题目中没要求这个,但我还是想写出来提醒一下自己。
#include <iostream>
using namespace std;
#include <string>
string s;
int Left = 0;//记录小括号
bool Judge = 0;
int main()
{
cin >> s;
for (int i = 0; i < s.size(); i ++)
{
if (s[i] == '@')/终止
{
break;
}
if (s[i] == '(')
{
if (i < s.size()-1 && (s[i+1]=='+' || s[i+1]=='-' || s[i+1]=='*' || s[i+1]=='/'))//判断括号位置是否正确
{
Judge = 1;
break;
}
Left ++;
}
if (s[i] == ')')
{
if (i > 0 && (s[i-1]=='+' || s[i-1]=='-' || s[i-1]=='*' || s[i-1]=='/'))
{
Judge = 1;
break;
}
Left --;
}
}
if (Judge == 1)
{
cout << "NO" << endl;
}
else if (Left == 0)
{
cout << "YES" << endl;
}
else
{
cout << "NO" << endl;
}
system("pause");
return 0;
}
有任何想法问题欢迎在评论区留言,博主也会慢慢改进。