class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 给定一个后缀表达式,返回它的结果
* @param str string字符串
* @return long长整型
*/
long long legalExp(string str) {
// write code here
stack<long long>a;
long long t=0,ans=0;
for(long long i=0;i<str.size();i++){
if(str[i]>='0'&&str[i]<='9'){
t=t*10+str[i]-'0'; //转换数字
}
else if(str[i]=='#'){//遇到#号把数字进栈
a.push(t);
t=0;
}
else { //剩下加减乘
if(str[i]=='+'){
long long t1=a.top();
a.pop();
long long t2=a.top();
a.pop();
//ans+=t1+t2;
a.push(t1+t2);
}
else if(str[i]=='-'){
long long t1=a.top();
a.pop();
long long t2=a.top();
a.pop();
// ans+=t2-t1;
a.push(t2-t1);
}
else if(str[i]=='*'){
long long t1=a.top();
a.pop();
long long t2=a.top();
a.pop();
// ans+=t2*t1;
a.push(t2*t1);
}
}
}
return a.top();
}
};
注意 不开longlong会爆两个样例 同时t1和t2可以写在判断符号外面(



京公网安备 11010502036488号