美文网首页
计算器(三)——加减和乘除和括号

计算器(三)——加减和乘除和括号

作者: 旺叔叔 | 来源:发表于2018-11-01 18:15 被阅读0次

抱歉 772这题是付费题被锁了,所以就假装我们在做题好了。

题目分析:用递归或者栈来解决括号优先级问题,用栈或者变量来解决加减乘除间优先级问题。此处先只写一种解法。

解法:

/**
 * 这算是1和2题的结合
 * 第一题教会我们解决括号优先级问题,可以递归或者栈
 * 第二题教会我们解决乘除优先级问题,一个变量
 * 1.递归解决括号优先级
 * 2.curRes解决加减乘除间的优先级
 */
public static int calculate(String s) {
    int n = s.length(), num = 0, curRes = 0, res = 0;
    char op = '+';
    for (int i = 0; i < n; ++i) {
        char c = s.charAt(i);
        if (c >= '0') {
            num = num * 10 + c - '0';
        } else if (c == '(') {
            int j = i, cnt = 0;
            for (; i < n; ++i) {
                if (s.charAt(i) == '(') ++cnt;
                if (s.charAt(i) == ')') --cnt;
                if (cnt == 0) break;
            }
            num = calculate(s.substring(j + 1, i));
        }
        if (c == '+' || c == '-' || c == '*' || c == '/' || i == n - 1) {
            switch (op) {
                case '+': curRes += num; break;
                case '-': curRes -= num; break;
                case '*': curRes *= num; break;
                case '/': curRes /= num; break;
            }
            if (c == '+' || c == '-' || i == n - 1) {
                res += curRes;
                curRes = 0;
            }
            op = c;
            num = 0;
        }
    }
    return res;
}

相关文章

  • 计算器(三)——加减和乘除和括号

    抱歉 772这题是付费题被锁了,所以就假装我们在做题好了。 题目分析:用递归或者栈来解决括号优先级问题,用栈或者变...

  • Python编程实现简易计算器

    我们这次实现的命令行计算器,支持加减乘除、括号、浮点数、负数,以及查看历史和退出功能。 主要的思路:read - ...

  • Nim早茶之使用栈实现计算器

    我们这次实现的命令行计算器,支持加减乘除、括号、浮点数、负数,以及查看历史和退出功能。 主要的思路:read - ...

  • JS基础——002

    1.运算符 算数运算符:+ - * / (加减乘除)%(取余)算数运算符先乘除后加减有小括号先算小括号...

  • 计算器(二)——加减和乘除

    LeetCode_227_BasicCalculatorII 题目分析: 解法一:栈 解法二:变量替换栈

  • 亲子日记1203

    2022.4.7 星期四 晴 小括号 今天弟弟的数学学习了小括号,加减乘除混合运算算是学全了。先算乘除,后算加减,...

  • 计算器(一)——加减和括号

    LeetCode_224_BasicCalculator 题目分析: 解法一:递归 解法二:栈

  • 学习python之路--Day5 计算器

    需求 可以处理带括号的加减乘除运算 需求分析 匹配括号re.search('\(.*\)',a) 匹配最里面括号r...

  • 安卓实现简单计算器

    实现一个计算器 ,有加减乘除功能,小数点和清除操作。 这是学校安卓老师布置的作业,计算器说实话实现起来挺多坑的,之...

  • 2018年3月30号 亲子日记第34篇

    今天晚饭以后,老公抱着二宝在看计算器,没等我问,他就考我和儿子,8.6.8.8用加减乘除运算,可以乱序,结...

网友评论

      本文标题:计算器(三)——加减和乘除和括号

      本文链接:https://www.haomeiwen.com/subject/ghaxxqtx.html