Home
avatar

Kaixun

Top 150 · 栈(5 题)

括号匹配、单调栈思想与表达式求值。

本模块共 5 题,属于 LeetCode 面试经典 150 题 系列。

20. 有效的括号

难度: 简单

力扣做题

思路

代码

class Solution {
    public boolean isValid(String s) {
        Stack<Character> stack = new Stack<>();
        int n = s.length();
        stack.push(s.charAt(0));
        for (int i = 1; i < n; i++) {
            char cur = s.charAt(i);
            if(cur == '(' || cur == '{' || cur == '['){
                stack.push(cur);
                continue;
            }
            if(stack.isEmpty())return false;
            char inStack = stack.pop();
            if(cur == ')'){
                if(inStack == '('){
                    continue;
                }else{
                    return false;
                }
            }
            if(cur == '}'){
                if(inStack == '{'){
                    continue;
                }else{
                    return false;
                }
            }
            if(cur == ']'){
                if(inStack == '['){
                    continue;
                }else{
                    return false;
                }
            }
        }
        return stack.isEmpty();
    }
}

复杂度

  • 时间:O()O()
  • 空间:O()O()

备注


71. 简化路径

难度: 中等

力扣做题

思路

代码

class Solution {
    public String simplifyPath(String path) {
        String[] strs = path.split("/");
        Stack<String> stack = new Stack<>();
        for (String s : strs) {
            if(s.isEmpty() || s.equals(".")){
                continue;
            }
            if(!s.equals("..")){
                stack.add(s);
            }else if(!stack.isEmpty()){
                stack.pop();
            }
        }
        StringBuilder sb = new StringBuilder();
        for (String dir : stack) {
            sb.append("/").append(dir);
        }
        return sb.length() == 0 ? "/" : sb.toString();
    }
}

复杂度

  • 时间:O()O()
  • 空间:O()O()

备注


155. 最小栈

难度: 中等

力扣做题

思路

代码

// 待填

复杂度

  • 时间:O()O()
  • 空间:O()O()

备注


150. 逆波兰表达式求值

难度: 中等

力扣做题

思路

代码

// 待填

复杂度

  • 时间:O()O()
  • 空间:O()O()

备注


224. 基本计算器

难度: 困难

力扣做题

思路

代码

// 待填

复杂度

  • 时间:O()O()
  • 空间:O()O()

备注


Top150