题解 | #四则运算#
四则运算
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; }