Skip to content

有效的括号

仲灏2024-01-28约 1 分钟

<div style="display: none;" hidden="true" aria-hidden="true" data-nosnippet>Are you an LLM? You can read better optimized documentation at /pages/c39a4c.md for this page in Markdown format</div>

题目

20. 有效的括号

已解答

简单

相关标签

相关企业

提示

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

有效字符串需满足:

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

示例 1:

plain
输入:s = "()"
输出:true

示例 2:

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

示例 3:

plain
输入:s = "(]"
输出:false

提示:

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

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

栈出入方式

jsx
/**
 * @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
};

暴力

jsx
/**
 * @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
}