博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode20:validParentheses
阅读量:5100 次
发布时间:2019-06-13

本文共 1201 字,大约阅读时间需要 4 分钟。

validParentheses

题目描述

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

An input string is valid if:

Open brackets must be closed by the same type of brackets. Open brackets must be closed in the correct order. Note that an empty string is also considered valid.

Example 1:

Input: "()" Output: true Example 2:

Input: "()[]{}" Output: true Example 3:

Input: "(]" Output: false Example 4:

Input: "([)]" Output: false Example 5:

Input: "{[]}" Output: true

20.validParentheses.gif

思路

  • 使用栈方法,遍历字符串
  • 如果当前字符为左边括号时,直接将其压入栈
  • 如果遇到右半边括号时,分类讨论:
    • 1.如果栈不为空,验证是否对应左边的括号,取出栈顶元素,继续循环、
    • 若这时栈为空,则直接返回false
    • 若不为对应的左边括号,返回false

实现思路

1.使用栈方法(使用数组的push()和pop()来模拟)

代码

var isValid = function(s) {  let valid = true  const stack = []  const mapper = {    '{': '}',    '(': ')',    '[': ']'  }  if (s === '') {    return valid;  }  for (let value of s) {    let v = value;    if (['{', '(', '['].indexOf(v) != -1) {      stack.push(v)    } else {      if (stack.length == 0) {        valid = false;      } else {        const va = stack.pop()        if (mapper[va] != v) {          valid = false;        }      }    }  }  return valid;}

转载于:https://www.cnblogs.com/axinmir/p/10784689.html

你可能感兴趣的文章
H5 localStorage sessionStorage
查看>>
Array map()方法
查看>>
redis源码搭建以及配置主从服务器
查看>>
centos 7 查看系统版本信息
查看>>
knn算法介绍以及实例演示
查看>>
Go基础之--结构体和方法
查看>>
LeetCode Merge Sorted Array
查看>>
学习进度16
查看>>
BuilderPattern(23种设计模式之一)
查看>>
030.Zabbix分布式部署
查看>>
spring-cloud Feign
查看>>
git的学习
查看>>
在笔记本电脑开通无线WIFI
查看>>
Loadrunner实现对tomcat的监控
查看>>
jsp+servlet 上传图片实例
查看>>
二十二 XML校验器
查看>>
五种常见的 PHP 设计模式
查看>>
个人冲刺07
查看>>
react设置多个className
查看>>
【程序20】
查看>>