栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA代码实现计算器功能

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA代码实现计算器功能

使用java代码实现计算器功能,可解决:

224.基本计算器
227.基本计算器II
772.基本计算器III

代码如下

class Solution {
    public int calculate(String s) {
        Deque deque = new LinkedList<>();
        for(int i = 0; i < s.length(); i++){
            //入队的时候就把空格排除在外,省的接下来再额外判断
            if(s.charAt(i) != ' '){
                deque.addLast(s.charAt(i));
            }
        }
        return helper(deque);
    }
    //递归调用,将括号里的当作一个数
    private int helper(Deque deque){ 
        Deque stack = new LinkedList<>();
        char sign = '+';
        int num = 0;
        while(deque.size() > 0){
            char c = deque.removeFirst();
            if(isdigit(c)){
                num = num * 10 + (c - '0');
            }
            if(c == '('){
                num = helper(deque);
            }
            if(!isdigit(c) || deque.size() == 0){
                if(sign == '+'){
                    stack.addLast(num);
                }else if(sign == '-'){
                    stack.addLast(-num);
                }else if(sign == '*'){
                    int pre = stack.removeLast();
                    stack.addLast(pre*num);
                }else if(sign == '/'){
                    int pre = stack.removeLast();
                    stack.addLast(pre/num);
                }
                num = 0;
                sign = c;
            }
            if(c == ')'){
                break;
            }
        }
        int res = 0;
        while(stack.size() > 0){
            int top = stack.removeLast();
            res += top;
        }
        return res;
    }
    private boolean isdigit(char c){
        if(c >= '0' && c <= '9'){
            return true;
        }
        return false;
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1006425.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号