js有效括号匹配
// 定义一个括号映射
const bracketMap = [
{
left: '[',
right: ']'
},
{
left: '<',
right: '>'
},
{
left: '(',
right: ')'
},
{
left: '【',
right: '】'
},
{
left: '(',
right: ')'
},
{
left: '《',
right: '》'
},
{
left: '{',
right: '}'
}
]
function match(params) {
const stack = [];
const leftMap = bracketMap.map(item => item.left);
const rightMap = bracketMap.map(item => item.right);
// 将字符串形式的括号集合转为数组
const arr = params.split('');
// 循环每一个括号,并做判断
for (const key in arr) {
// 左括号入栈
if (leftMap.includes(arr[key])) {
stack.push(arr[key]);
}
// 右括号 && 右括号在映射中的下标等于栈顶括号(栈顶括号:是左括号,因为只有左括号执行了进入栈操作)在映射中的下标,说明括号匹配,那么执行出栈操作
else if (rightMap.includes(arr[key]) && (bracketMap.findIndex(item => item.right === arr[key]) === bracketMap.findIndex(item => item.left === stack[stack.length - 1]))) {
stack.pop(arr[key]);
}
// 在循环中未结束,栈为空,匹配失败
else (!stack.length) {
return 'ERROR';
}
}
// 最后判断,栈为空,则表示匹配成功;反之,则匹配失败
return stack.length ? 'ERROR' : 'SUCCESS';
}
// 测试case:
const str = '[<(《》【】(([【[[]]《》】()])))>]'; // true
// const str = '(){}[]'; // true
// const str = '([{}])'; // true
// const str = '(}'; // false
// const str = '[(])'; // false
// const str = '[({})](]'; // false
console.log(match(str));
js有效括号匹配的更多相关文章
- HDU4632 Poj2955 括号匹配 整数划分 P1880 [NOI1995]石子合并 区间DP总结
题意:给定一个字符串 输出回文子序列的个数 一个字符也算一个回文 很明显的区间dp 就是要往区间小的压缩! #include<bits/stdc++.h> using namesp ...
- 括号匹配 区间DP (经典)
描述给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能使这些括号匹配起来 ...
- YTU 3003: 括号匹配(栈和队列)
3003: 括号匹配(栈和队列) 时间限制: 1 Sec 内存限制: 128 MB 提交: 2 解决: 2 [提交][状态][讨论版] 题目描述 假设一个表达式中只允许包含三种括号:圆括号&quo ...
- [原]NYOJ 括号匹配系列2,5
本文出自:http://blog.csdn.net/svitter 括号匹配一:http://acm.nyist.net/JudgeOnline/problem.php?pid=2 括号匹配二:htt ...
- POJ C程序设计进阶 编程题#4:括号匹配问题
编程题#4:扩号匹配问题 来源: POJ(Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 在某 ...
- 南阳理工ACM 括号匹配问题,并求出使得括号能够匹配需要新增的最小括号数(括号匹配(二))
描述 给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能使这些括号匹配起 ...
- 【栈思想、DP】NYOJ-15 括号匹配(二)
括号匹配(二) 描述 给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能 ...
- NYOJ 题目15 括号匹配(二)(区间DP)
点我看题目 题意 : 中文题不详述. 思路 : 本来以为只是个小模拟,没想到是个区间DP,还是对DP不了解. DP[i][j]代表着从字符串 i 位置到 j 位置需要的最小括号匹配. 所以初始化的DP ...
- C语言数据结构之栈:括号匹配
括号匹配这是个很简单的题目,如果只有小括号,就模拟进栈和出栈的过程就行了: 注:输入时'@'作为结束标志 #include <stdio.h> int main() { freopen(& ...
- [NYOJ 15] 括号匹配(二)
括号匹配(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:6 描述 给你一个字符串,里面只包含"(",")","[&qu ...
随机推荐
- python multipart/form-data post接口请求
python multipart/form-data post接口请求 def WebKit_format(data, boundary="----WebKitFormBoundary*** ...
- Python和RPA网页自动化-让select标签下拉框选择指定文本的方法
以影刀商城(https://shop.yingdao.com/webOperations/index)为例: 该下拉框有<select>标签.分别使用Python和RPA网页自动化让下拉框 ...
- (一)MOngoDB的安装与配置(Windows和Centos)
其实Windows的安装没有什么难的,主要是后的Centos下的安装,我是在centos7上安装测试的,不管是手动安装还是脚本安装我都是成功才发出来的,有什么的问题可以留言,写博客只是为了记录和简单的 ...
- 【Hibernate】Re08 加载策略配置
一.关联查询的问题: 使用关联查询,例如简单的一对多关系查询,查出一个部门对象和对应的N个员工对象. 如果一般情况下,我们只是需要部门对象,并不关系关联的员工对象,那么Hibernate关联查询出来的 ...
- 【SpringSecurity】01 授权、认证、注销
[前提情要] Security学习地址: https://www.bilibili.com/video/BV1KE411i7bC 狂神的微信笔记: https://mp.weixin.qq.com/s ...
- 为baselines算法库安装mujoco环境支持——ubuntu 20.04安装MuJoCo2.1.1
下载开源版本的mujoco二进制文件: wget https://github.com/deepmind/mujoco/releases/download/2.1.1/mujoco-2.1.1-lin ...
- 【转载】【重磅】Gym发布 8 年后,迎来第一个完整环境文档,强化学习入门更加简单化!
2022年11月22日 更新 gym官方地址: https://www.gymlibrary.dev/ ========================================= 原文地址: ...
- PHP 字符串大小写操作
PHP为我们提供了字符串中大小写字母转换的函数, strtoupper()将指定的字符全部转换为大写: strtolower()将北定的字符都转换成小写: ucwords()将指定字符串中每个单词的首 ...
- Long Way to be Non-decreasing 题解
前言 题目链接:洛谷:CF. 题意简述 yzh 喜欢单调不降序列. 她有一个序列 \(a\),最初为 \(a_1, \ldots, a_n\),其中每个元素都在 \([1, m]\) 内. 她希望使序 ...
- 【简单菊花图】Codeforce 1583Problem - B.md
1583Problem - B - Codeforces 题目大意:n个点的无根树 给出m个限制条件 (a,c,b)在a到b路径上不能存在c点,求任意一种可能的树的所有边 注意数据范围:1<m& ...