224_基本计算器

简介: 224_基本计算器

224_基本计算器

 

package 栈;
import java.util.Deque;
import java.util.LinkedList;
import java.util.Stack;
/**
 * https://leetcode-cn.com/problems/basic-calculator/
 */
/**
 * 思路:只有加减法,可以把括号全都展开来写,例如 2 - (1 - 3)展开成 2 - 1 + 3。  
 *  -2 + (-3 + 4) ;  -2 - (-3 + 4 ) + 8
 *  不断的累加(操作符是当前该数的正负):
 *  遇到 ( ,把当前的操作符(数的正负) push进去
 * 遇到 ) ,说明运算结束,重新获取操作符 
 *
 */
public class _224_基本计算器 {
    public int calculate(String s) {
        Deque<Integer> ops = new LinkedList<Integer>();
        ops.push(1);
        int sign = 1;
        int ret = 0;
        int n = s.length();
        int i = 0;
        while (i < n) {
            if (s.charAt(i) == ' ') {
                i++;
            } else if (s.charAt(i) == '+') {
                sign = ops.peek();
                i++;
            } else if (s.charAt(i) == '-') {
                sign = -ops.peek();
                i++;
            } else if (s.charAt(i) == '(') {
                ops.push(sign);
                i++;
            } else if (s.charAt(i) == ')') {
                ops.pop();
                i++;
            } else {
                long num = 0;
                while (i < n && Character.isDigit(s.charAt(i))) {
                    num = num * 10 + s.charAt(i) - '0';
                    i++;
                }
                ret += sign * num;
            }
        }
        return ret;
    }
}
目录
相关文章
|
8月前
计算器V2
编写了一个简单的程序,实现了浮点数的加、减、乘、除和幂运算。程序包括了对浮点数的计算,并展示了运算结果。其中,幂运算需包含&quot;math.h&quot;头文件。
66 0
|
8月前
计算器V1
创建一个简单的计算器程序,能执行整数的加、减、乘、除和求余运算。用户输入格式为:操作数1 运算符op 操作数2。遇到除数为0时,输出&quot;Division by zero!&quot;;运算符非法则输出&quot;Invalid operator!&quot;。示例输入和输出已给出。
69 0
|
8月前
|
前端开发 JavaScript
使用html+css+javaScript 完成计算器
使用html+css+javaScript 完成计算器
|
8月前
leetcode-224:基本计算器
leetcode-224:基本计算器
45 0
|
Java
计算器的模拟实现
计算器的模拟实现
100 0
一个计算器器脚本
一个计算器器脚本
84 1
|
算法
lougu 2485计算器(BSGS)
lougu 2485计算器(BSGS)
142 0
|
前端开发
一个很简易的计算器
一个很简易的计算器
141 0
一个很简易的计算器
|
C++
201509-2 日期计算
201509-2 日期计算
92 0
201509-2 日期计算