实现一个基本的计算器来计算一个简单的字符串表达式的值。

字符串表达式仅包含非负整数,+, - ,*/ 四种运算符和空格  。 整数除法仅保留整数部分。

示例 1:

输入: "3+2*2"
输出: 7

示例 2:

输入: " 3/2 "
输出: 1

示例 3:

输入: " 3+5 / 2 "
输出: 5

说明:

  • 你可以假设所给定的表达式都是有效的。
  • 不要使用内置的库函数 eval

class Solution {
public:
    int calculate(string s) {
        int res = 0, num = 0, n = s.size();
        char op = '+';
        stack<int> st;
        for (int i = 0; i < n; ++i) {
            if (s[i] >= '0') {
                num = num * 10 + s[i] - '0';
            }
            if ((s[i] < '0' && s[i] != ' ') || i == n - 1) {
                if (op == '+') st.push(num);
                if (op == '-') st.push(-num);
                if (op == '*' || op == '/') {
                    int tmp = (op == '*') ? st.top() * num : st.top() / num;
                    st.pop();
                    st.push(tmp);
                }
                op = s[i];
                num = 0;
            } 
        }
        while (!st.empty()) {
            res += st.top();
            st.pop();
        }
        return res;
    }
};

227.基本计算器II相关推荐

  1. 227. 基本计算器 II

    227. 基本计算器 II Ideas 对于表达式计算的问题,一般第一个想到的就是stack,每次从表达式中拿一个值放到stack中,如果是乘除,因为优先级比较高,所以先计算,然后把计算结果appen ...

  2. 693. 交替位二进制数 / 227. 基本计算器 II / 264. 丑数 II

    693. 交替位二进制数[简单题][每日一题] 思路:[位运算] 排除特殊情况n=1,此时return true. 将n转为二进制字符串,依次将相邻两位数字进行异或运算. 异或运算的结果为flag,如 ...

  3. leetcode 227. 基本计算器 II(栈)

    给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值. 整数除法仅保留整数部分. 示例 1: 输入:s = "3+2*2" 输出:7 解题思路 利用两个栈,一个记录 ...

  4. 227. 基本计算器 II。

    给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值. 整数除法仅保留整数部分. 你可以假设给定的表达式总是有效的.所有中间结果将在 [-231, 231 - 1] 的范围内. 注意: ...

  5. leetcode 227. Basic Calculator II | 227. 基本计算器 II(中缀表达式求值)

    题目 https://leetcode.com/problems/basic-calculator-ii/ 题解 这道题是 中缀表达式求值 的简化版(因为没有左右括号运算),不过输入的形式有两个处理起 ...

  6. [leetcode]227. 基本计算器 II

    class Solution {// 算法描述如下: // (1)操作符栈初始化, 将结束符′#′进栈, 然后读入中缀表达式字符流的首字符ch . // (2)重复执行以下步骤, 直到ch =′#′, ...

  7. 【LeetCode - 227】基本计算器 II(栈)

    https://leetcode-cn.com/problems/basic-calculator-ii/ 给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值. 整数除法仅保留整数部 ...

  8. LetCode: 227. 简单计算器2

    提示 LintCode中的相关算法题实现代码,可以在我的GithHub中下载. 题目需求 实现一个基本的计算器来计算一个简单的字符串表达式的值. 字符串表达式仅包含非负整数,+, - ,*,/ 四种运 ...

  9. leetcode题解227-基本计算器 II

    问题描述 给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值. 整数除法仅保留整数部分. 示例 1: 输入:s = "3+2*2" 输出:7 示例 2: 输入:s ...

  10. [Swift]LeetCode227. 基本计算器 II | Basic Calculator II

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

最新文章

  1. 70. Climbing Stairs
  2. 第一类Stirling数和第二类Stirling
  3. 如何彻底卸载MySQL
  4. 从零开始学习Hadoop--第2章 第一个MapReduce程序
  5. 一图看懂云栖大会「云原生」发布
  6. nginx nodejs环境配置_nodejs + nginx + ECS阿里云服务器环境设置
  7. LongAdder,AtomicIntegerFieldUpdater深入研究
  8. 老板说,我请你来,不是叫你无脑拷贝的,竟然在线上搞出这么大的一个BUG......
  9. 190706每日一句
  10. python面向对象实例王者荣耀_python王者荣耀
  11. matlab计算轮廓曲率半径,用matlab求出最小曲率半径曲线方程实例
  12. 二阶系统根轨matlab,自控-二阶系统Matlab仿真.doc
  13. 微服务架构设计思维导图总结
  14. 分享个一拳超人辅助脚本,自动挂机刷金币/经验/副本工具
  15. linux开机不运行桌面快捷方式,Android 开机自动运行和添加删除桌面快捷方式
  16. 入门OSPF就这一篇足够了
  17. 华为智慧屏 鸿蒙如何,抛开鸿蒙 华为智慧屏V65作为电视合格吗?
  18. 用户增长——CLV用户生命周期价值CLTV 笔记(一)
  19. 程序猿表白情诗代码,赶紧收藏一下
  20. 上周热点回顾(1.7-1.13)

热门文章

  1. 50个提高会话技巧的方法 (转IT经理人)
  2. Linux学习----文件的使者-Rsync(马哥教育原创)
  3. 《Puppet权威指南》——第1章 运维工程师的利器——自动化运维工具
  4. 我对Backbone的认识
  5. Java CopyOnWrite容器
  6. android-x86 下载地址
  7. 解决进入XP系统无法响应故障
  8. 轻量容器和注射依赖 的自实现
  9. php 开源邮件系统,企业级开源邮件系统搭建的全过程
  10. envi反演水质参数_一种基于航空高光谱数据的水库水质参数定量反演方法与流程...