仲灏小栈 仲灏小栈
首页
大前端
后端&运维
其他技术
生活
关于我
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

仲灏

诚意, 正心, 格物, 致知
首页
大前端
后端&运维
其他技术
生活
关于我
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 嵌入式

    • Arduino开发 及常见知识储备
    • 指纹模块
  • Android

  • 编辑器

  • 产品&设计

  • 测试

  • 虚拟机

  • 算法

  • 网络

  • 安全

  • Nas

  • 硬件

  • CDCI

  • 破解

  • 建筑

  • clash-rule最佳配置
  • Untitled
  • 其他技术
  • 算法
仲灏
2024-01-28
目录

有效的括号

# 题目

20. 有效的括号 (opens new window)

已解答

简单

相关标签

相关企业

提示

给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。
  3. 每个右括号都有一个对应的相同类型的左括号。

示例 1:

输入:s = "()"
输出:true
1
2

示例 2:

输入:s = "()[]{}"
输出:true
1
2

示例 3:

输入:s = "(]"
输出:false
1
2

提示:

  • 1 <= s.length <= 104
  • s 仅由括号 '()[]{}' 组成

# 个人题解(有很多优化的点)

栈出入方式

/**
 * @param {string} s
 * @return {boolean}
 */
var isValid = function(s) {
    const strMap = {
        '[':']',
        '(':')',
        '{':'}'
    }
    const stackArr = []
    for(let i = 0; i < s.length; i++) {
        const curStr = s[i]
        if(strMap[stackArr[stackArr.length-1]] === curStr) {
            stackArr.pop()
        } else {
            stackArr.push(curStr)
        }
        
    }
    return !stackArr.length
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

暴力

/**
 * @param {string} s
 * @return {boolean}
 */
var isValid = function(s) {
    const repStrArr = ['[]', '{}', '()']
    for(let i = 0; i < s.length; i ++) {
        repStrArr.forEach(e => {
            s = s.replace(e, '')
        })
    }
    return !s.length
}
1
2
3
4
5
6
7
8
9
10
11
12
13
上次更新: 2024/01/28, 17:03:40
最近更新
01
vim日常使用记录
04-02
02
滑动窗口最大值
04-02
03
有效的字母异位词
04-02
更多文章>
Theme by Vdoing | Copyright © 2021-2025 izhaong | github | 蜀ICP备2021031194号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式