LeetCode刷题-20.有效括号(JS)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode刷题-20.有效括号(JS)相关的知识,希望对你有一定的参考价值。

参考技术A 给定一个只包括 '(',')','','','[',']' 的字符串,判断字符串是否有效。

有效字符串需满足:

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。

越靠后的左括号,最先匹配,也就是 后进先出 的思想,可以用栈这个数据结构

[JavaScript 刷题] 栈 - 有效的括号, leetcode 20

[JavaScript 刷题] 栈 - 有效的括号, leetcode 20

github repo 地址: https://github.com/GoldenaArcher/js_leetcode,Github 的目录 大概 会更新的更勤快一些。

题目地址:20. Valid Parentheses

题目

如下:

Given a string s containing just the characters '(', ')', '', '', '[' and ']', determine if the input string is valid.

An input string is valid if:

  1. Open brackets must be closed by the same type of brackets.
  2. Open brackets must be closed in the correct order.

解题思路

一道经典题,主要核心思想就是利用栈的 FILO 的特性,每次遇到 , ], 和 ) 都检查一下是否与栈中最后一个元素是一对,否则就是不合法的状态。

唯一需要注意的一点就是,返回值需要判断栈是否为空,因为有可能会出现出现了一次的开括号,但是没有对应的闭括号这种情况。

使用 JavaScript 解题

/**
 * @param string s
 * @return boolean
 */
var isValid = function (s) 
  const map = 
      "": "",
      ")": "(",
      "]": "[",
    ,
    stack = [];

  for (const ch of s) 
    if (ch === "(" || ch === "" || ch === "[") 
      stack.push(ch);
      continue;
    

    if (map[ch] !== stack.pop()) return false;
  

  return stack.length === 0;
;

以上是关于LeetCode刷题-20.有效括号(JS)的主要内容,如果未能解决你的问题,请参考以下文章

[JavaScript 刷题] 栈 - 有效的括号, leetcode 20

Leetcode刷题20. 有效的括号

Leetcode刷题100天—20. 有效的括号(栈)—day02

Leetcode刷题100天—20. 有效的括号(栈)—day02

Leetcode刷题Python20. 有效的括号

#leetcode刷题之路20-有效的括号