题解 | 牛牛与后缀表达式
牛牛与后缀表达式
https://www.nowcoder.com/practice/a1a4f178f6ff4188890e51da1cc8ce10
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 给定一个后缀表达式,返回它的结果
* @param str string字符串
* @return long长整型
*/
long long legalExp(string str) {
// write code here
stack<long long> st;
int p1=0,p2=str.find('#');
string num_str;
long long num;
for(int i=0;i<str.size();i++){
if(str[i]=='#'){
p2=i;
num_str=str.substr(p1,p2-p1);
p1=p2+1;
num=stoi(num_str);
st.push(num);
}
if(str[i]=='+'){
p1=i+1;
long long n1=st.top();st.pop();
long long n2=st.top();st.pop();
st.push(n1+n2);
}else if(str[i]=='-'){
p1=i+1;
long long n1=st.top();st.pop();
long long n2=st.top();st.pop();
st.push(n2-n1);
}else if(str[i]=='*'){
p1=i+1;
long long n1=st.top();st.pop();
long long n2=st.top();st.pop();
st.push(n1*n2);
}
}
return st.top();
}
};
