基本计算器 发表于 2022-08-15 | 分类于 算法 , 栈 , 基本计算器 | 基本计算器 224. 基本计算器123456789101112131415161718192021222324252627282930class Solution {public: int calculate(string s) { //思路:由于只有+、-操作,将括号展开,借助于栈 stack<int> sign; //栈顶记录当前符号 sign.push(1); //默认为 + int res = 0; int num = 0; int op = 1; for(char ch : s){ //遍历 空格自动跳过 if(ch>='0' && ch<='9'){ //遇到数值 num = num*10 + (ch-'0'); continue; } res += op * num; //计算一个运算符 num = 0; //数值清空 if(ch=='+') op = sign.top(); else if(ch=='-') op = -sign.top(); else if(ch=='(') sign.push(op); //进入左括号,把左括号之前的符号置于栈顶 else if(ch==')') sign.pop(); //退出括号,弹出栈顶符号 } res += op*num; //计算最后一个数 return res; }}; -------------本文结束 感谢阅读------------- 本文作者: HReina 本文链接: http://hreina.com/2022/08/15/%E5%9F%BA%E6%9C%AC%E8%AE%A1%E7%AE%97%E5%99%A8/ 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!