day11-逆波兰表达式

leetcode 20 有效的括号

    public static boolean isValid(String s){
        //Deque<Character> stack = new LinkedList<>();
        ArrayDeque<Character> stack = new ArrayDeque<>();
        if(s.length()%2!=0) return false;
        for (int i = 0; i < s.length(); i++) {

            switch (s.charAt(i)) {
                case '{':
                    stack.push('}');
                    break;
                case '(':
                    stack.push(')');
                    break;
                case '[':
                    stack.push(']');
                    break;
                case '}':
                case ']':
                case ')':
                    if (stack.size() == 0 || stack.peek() != s.charAt(i)) { // 和栈顶元素比对
                        return false;
                    } else {
                        stack.pop();
                        break;
                    }
            }
        }
        if(stack.size()!=0) return false;

        return true;
    }

leetcode 1047 删除相同相邻字符

    public static String removeDuplicates(String s){
        String result ="";
        Deque<Character> stack = new LinkedList<>();
        //ArrayDeque<Character> stack = new ArrayDeque<>();

        for(int i =0;i< s.length();i++){
            if(stack.size()==0) {
                stack.push(s.charAt(i));
                continue;
            }
            if(stack.peek()==s.charAt(i))
                stack.pop();
            else
                stack.push(s.charAt(i));
        }

        while(!stack.isEmpty()){
            result = stack.pop() + result;
        }

        return result;
    }

leetcode 150 逆波兰表达式

    public static int evalRPN(String[] tokens){
        int result=0;
        Deque<Integer> stack = new LinkedList<>();
        String tmp =null;

        for(int i=0;i<tokens.length;i++){
            tmp = tokens[i];
            if(tmp=="+"){
                result = stack.pop() + stack.pop();
                stack.push(result);
            }else if(tmp.equals("-")){
                result = -stack.pop() + stack.pop();
                stack.push(result);
            }else if(tmp.equals("*")){
                result = stack.pop() * stack.pop();
                stack.push(result);
            } else if (tmp.equals("/")) {
                int tmp11= stack.pop();
                int tmp12= stack.pop();
                result = tmp12/tmp11;
                stack.push(result);
            } else {
                stack.push(Integer.valueOf(tokens[i]));
            }
        }

        return result;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值