首页 > 代码库 > [LeetCode]224. Basic Calculator(模拟,栈)
[LeetCode]224. Basic Calculator(模拟,栈)
题目链接:https://leetcode.com/problems/basic-calculator/#/description
题意:计算一个只含有括号、加减、非负数的表达式。
用一个栈记数,一个栈记符号。
1 class Solution { 2 public: 3 int calculate(string s) { 4 int n = s.length(); 5 stack<int> st; 6 stack<char> op; 7 int ret = 0; 8 op.push(‘+‘); 9 for(int i = 0; i < n; i++) { 10 if(isdigit(s[i])) { 11 int x = 0; 12 while(isdigit(s[i])) x = x * 10 + s[i++] - ‘0‘; 13 i--; 14 char o = op.top(); op.pop(); 15 if(o == ‘+‘) ret += x; 16 else ret -= x; 17 } 18 else if(s[i] == ‘+‘ || s[i] == ‘-‘) op.push(s[i]); 19 else if(s[i] == ‘(‘) { 20 st.push(ret); 21 op.push(‘+‘); 22 ret = 0; 23 } 24 else if(s[i] == ‘)‘) { 25 char o = op.top(); op.pop(); 26 if(o == ‘+‘) ret += st.top(); 27 else ret = st.top() - ret; 28 st.pop(); 29 } 30 } 31 return ret; 32 } 33 };
[LeetCode]224. Basic Calculator(模拟,栈)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。