class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 给定一个后缀表达式,返回它的结果 * @param str string字符串 * @return long长整型 */ long long legalExp(string str) { stack<long long>st; for (int i = 0; i < str.size();) { if (str[i] == '#') i++; else if (str[i] == '+') { long long num1 = st.top(); st.pop(); long long num2 = st.top(); st.pop(); st.push(num1 + num2); i++; } else if (str[i] == '*') { long long num1 = st.top(); st.pop(); long long num2 = st.top(); st.pop(); st.push(num1 * num2); i++; } else if (str[i] == '-') { long long num1 = st.top(); st.pop(); long long num2 = st.top(); st.pop(); st.push(num2 - num1); i++; } else { int l = i; long long num = 0; while (str[l]!='#') { num = num * 10 + str[l] - '0'; l++; } i += l-i+1; st.push(num); } } return st.top(); } };