题解 | #四则运算#
四则运算
https://www.nowcoder.com/practice/9999764a61484d819056f807d2a91f1e
#include <iostream>
#include <list>
#include <stack>
#include <string>
using namespace std;
int i = 0;//一定要设为全局变量,因为有迭代
int GetRes(string str) {
list<int> digit_st;
char op = '+';
int num = 0;
while ( i < str.size()) {
while (str[i] >= '0' && str[i] <= '9' && i < str.size()) {
num = num * 10 + (str[i] - '0');
i++;
}
if (str[i] == '(' || str[i] == '[' || str[i] == '{') {
i++;
num = GetRes(str);
}
switch (op) {
case '+':
digit_st.push_back(num);
break;
case '-':
digit_st.push_back(-num);
break;
case '*':
digit_st.back() *= num;
break;
case '/':
digit_st.back() /= num;
break;
}
num = 0;
op = str[i];
if (str[i] == ')' || str[i] == ']' || str[i] == '}') {
i++;
break;
}
i++;
}
int ans = 0;
while (digit_st.size()) {
ans += digit_st.back();
digit_st.pop_back();
}
return ans;
}
int main() {
string str;
while (cin >> str) {
int res = GetRes(str);
cout << res << endl;
}
return 0;
}
叮咚买菜工作强度 128人发布
查看6道真题和解析