题目:
NC50965 单调栈 求最大的矩形面积
样例都对,交上去通过0%
```c++
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 给定一个后缀表达式,返回它的结果
* @param str string字符串
* @return long长整型
*/
long long legalExp(string str)
{
stack <long long int> q;
string s=str;
string s2=" ";
long long int p,n,ans=0;
for(long long int i=0;i<s.length();i++)
{
// cout<<"s[i]="<<s[i]<<endl;
if(s[i]=='#' && s[i]!='+' && s[i]!='-' && s[i]!='*')
{
q.push(ans);
ans=0;
}
else if(s[i] <="9" && s[i] >= "0")//!='#' && s[i]!='+' && s[i]!='-' && s[i]!='*')
{
ans=ans*10+s[i]-'0';
// cout<<"i="<<i<<" "<<"ans="<<ans<<endl;
}
else if(s[i]=='+')
{
long long int first=q.top();
q.pop();
long long int second=q.top();
q.pop();
// cout<<first<<" "<<second<<" "<<"first+second="<<first+second<<endl;
q.push(first+second);
}
else if(s[i]=='-')
{
long long int first=q.top();
q.pop();
long long int second=q.top();
q.pop();
// cout<<"first-second="<<first-second<<endl;
q.push(first-second);
}
else if(s[i]=='*')
{
long long int first=q.top();
q.pop();
long long int second=q.top();
q.pop();
// cout<<"first*second="<<first*second<<endl;
q.push(first*second);
}
}
return q.top();
}
};
```