🌟力扣算法——有效字符串

160 阅读1分钟

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

有效字符串需满足:

1.左括号必须用相同类型的右括号闭合。
2.左括号必须以正确的顺序闭合。
示例 1:
输入:s = "()"
输出:true

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

示例 3:
输入:s = "(]"
输出:false

示例 4:
输入:s = "([)]"
输出:false

示例 5:
输入:s = "{console.log([1,2,3])"
输出:false


示例 6:
输入:s = "{console.log([1,2,3])}"
输出:true

解题思路

function fun(str) {
      const arr = []
      const obj = {
        '(': ')',
        "[": ']',
        "{": "}"
      }

      for (let i = 0; i < str.length; i++) {
        if (str[i] == '[' || str[i] == '(' || str[i] == "{") {
          arr.push(str[i])
        } else if (str[i] == '}' || str[i] == ')' || str[i] == "]") {
          if (str[i] != obj[arr.pop()]) {
            return false
          } else if (!arr.length && i == str.length - 1) {
            return true
          }
        }
      }
      return false
    }


console.log(fun('[]{}')) //true
console.log(fun('{console.log([1,2,3])}')) //true
console.log(fun('{console.log([1,2,3])')) //false