算法训练营Day11(栈)

20. 有效的括号

20. 有效的括号 - 力扣(LeetCode)
这道题没看卡哥的视频,我认为我的方法更好一些。

class Solution {
    public boolean isValid(String s) {
        Stack<Character> stack = new Stack<>();
        char[] ch = s.toCharArray();
        for (char c : ch){
            if(c=='{'||c=='['||c=='('){
                stack.push(c);
                //{
            }else {
                if(!stack.isEmpty()){
                    if(c=='}'){
                        if(stack.pop()!='{'){
                            return false;
                        }
                    }
                    if(c==')'){
                        if(stack.pop()!='('){
                            return false;
                        }
                    }
                    if(c==']'){
                        if(stack.pop()!='['){
                            return false;
                        }
                    }
                }else {
                    return false;
                }
            }
        }
        return stack.isEmpty();
    }
}

优化

class Solution {
    public boolean isValid(String s) {
        Stack<Character> stack = new Stack<>();
        char[] ch = s.toCharArray();
        for (char c : ch){
            if(c=='{'||c=='['||c=='('){
                stack.push(c);
                continue;
            }
            if(stack.isEmpty()){
                return false;
            }
            if(c=='}'&&stack.pop()!='{'){
                return false;
            }
            if(c==')'&&stack.pop()!='('){
                return false;
            }
            if(c==']'&&stack.pop()!='['){
                return false;
            }
        }
        return stack.isEmpty();
    }
}

 

1047. 删除字符串中的所有相邻重复项

1047. Remove All Adjacent Duplicates In String - 力扣(LeetCode)

也是自己写的,二刷再看视频吧,有点简单。

class Solution {
  public String removeDuplicates(String s) {
        //"abbaca"
        Stack<Character> stack = new Stack<>();
        char[] ch = s.toCharArray();

        for (int i = 0; i < ch.length; i++) {
            if(stack.isEmpty()||ch[i]!=stack.peek()){//aa
                stack.push(ch[i]);
            }else {
                stack.pop();
            }
            //ab

        }
        String str = "";
        //剩余的元素即为不重复的元素
        while (!stack.isEmpty()) {
            str = stack.pop() + str;
        }
        return str;
    }
}

 150. 逆波兰表达式求值 

150. 逆波兰表达式求值 - 力扣(LeetCode)

这个题看的卡哥视频,就是理解一下逆波兰表达式,就是编译原理的一些东西,也就是二叉树的后续遍历。

class Solution {
    public int evalRPN(String[] tokens) {
        // 1+2 * 3 4
        //12 + 34+ *
        //stack:12 3 334 37 21
        Stack<Integer> stack = new Stack<>();

        for(String s:tokens){
            if(s.equals("+")||s.equals("-")||s.equals("*")||s.equals("/")){
                int num1 = stack.pop();
                int num2 = stack.pop();
                if(s.equals("+")){
                    stack.push(num1+num2);
                }else if(s.equals("-")){
                    stack.push(num2-num1);
                }else if(s.equals("*")){
                    stack.push(num1*num2);
                }else if(s.equals("/")){
                    stack.push(num2/num1);
                }
            }else {
                    stack.push(Integer.valueOf(s));
                }
        }
        return stack.pop();
    }
}

相关推荐

  1. 算法训练Day11

    2023-12-09 21:50:04       59 阅读
  2. 算法训练Day10和队列)

    2023-12-09 21:50:04       69 阅读
  3. 算法训练Day59(单调

    2023-12-09 21:50:04       64 阅读
  4. 算法训练Day15

    2023-12-09 21:50:04       61 阅读
  5. 算法训练day14

    2023-12-09 21:50:04       36 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-09 21:50:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-09 21:50:04       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-09 21:50:04       82 阅读
  4. Python语言-面向对象

    2023-12-09 21:50:04       91 阅读

热门阅读

  1. ECU安全学习网站和书籍介绍

    2023-12-09 21:50:04       45 阅读
  2. 如何同步fork项目原仓库的更新

    2023-12-09 21:50:04       54 阅读
  3. 决策树 C4.5算法

    2023-12-09 21:50:04       60 阅读
  4. 【C语言】7-35 强迫症 分数 10

    2023-12-09 21:50:04       55 阅读
  5. web开发常见安全漏洞

    2023-12-09 21:50:04       45 阅读
  6. 【算法】摩尔投票算法

    2023-12-09 21:50:04       59 阅读
  7. Kafka官方生产者和消费者脚本简单使用

    2023-12-09 21:50:04       61 阅读
  8. LeetCode763. Partition Labels

    2023-12-09 21:50:04       39 阅读
  9. 大数据量快速数据库还原程序

    2023-12-09 21:50:04       54 阅读
  10. K-Means 算法详解

    2023-12-09 21:50:04       51 阅读