题解 | #牛的表达式计算器#
牛的表达式计算器
https://www.nowcoder.com/practice/261e7f01438f414c92f59c0059d3a906
#include <string>
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param tokens string字符串vector
* @return int整型
*/
int strToInt(string & str) {
int sum = 0;
bool flag = false;
if (str[0] == '-') {
flag = true;
}
for (int i = 0; i < str.size(); i++) {
if (str[i] == '-' || str[i] == '+') continue;
sum *= 10;
sum += (str[i]-'0');
}
return flag ? -sum: sum;
}
int opet(int a, int b, string& op) {
if (op == "+") {
return a + b;
} else if (op == "-") {
return a - b;
} else if (op == "*") {
return a * b;
} else if (op == "/") {
return a / b;
}
return 0;
}
int calculatePostfix(vector<string>& tokens) {
// write code here
stack<int> stk;
int a, b;
for (int i = 0; i < tokens.size(); i++) {
if (tokens[i] == "+" || tokens[i] == "-" || tokens[i] == "*" || tokens[i] == "/") {
b = stk.top();
stk.pop();
a = stk.top();
stk.pop();
stk.push(opet(a, b, tokens[i]));
} else {
stk.push(strToInt(tokens[i]));
}
}
return stk.top();
}
};