写点什么

【LeetCode】 基本计算器 II Java 题解

用户头像
HQ数字卡
关注
发布于: 2021 年 03 月 11 日

题目

给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。


整数除法仅保留整数部分。


代码


public class DayCode {    public static void main(String[] args) {        String s = "1 + 2 * 3";        int ans = new DayCode().calculate(s);        System.out.println("ans is " + ans);    }
/** * https://leetcode-cn.com/problems/basic-calculator-ii/ * 时间复杂度O(n) * 空间复杂度O(n) * @param s * @return */ public int calculate(String s) { Deque<Integer> stack = new ArrayDeque<>(); char preSign = '+'; int num = 0; int n = s.length(); for (int i = 0; i < n; i++) { if (Character.isDigit(s.charAt(i))) { num = num * 10 + s.charAt(i) - '0'; } if (!Character.isDigit(s.charAt(i)) && s.charAt(i) != ' ' || i == n - 1) { switch (preSign) { case '+': stack.push(num); break; case '-': stack.push(-num); break; case '*': stack.push(stack.pop() * num); break; case '/': stack.push(stack.pop() / num); break; default: break; } preSign = s.charAt(i); num = 0; } }
int ans = 0; while (!stack.isEmpty()) { ans += stack.pop(); } return ans; }}
复制代码


总结

  • 今天的计算器题目和昨天比较,是结合了+,-*,/四则运算,没有括号,相对比昨天的()问题好处理。

  • 解决计算器,还有用栈来存储数据,通过符号来计算,应用了栈先入后出的性质。

  • 坚持每日一题,加油!


发布于: 2021 年 03 月 11 日阅读数: 8
用户头像

HQ数字卡

关注

还未添加个人签名 2019.09.29 加入

LeetCode,略懂后端的RD

评论

发布
暂无评论
【LeetCode】 基本计算器 II Java题解