面试题之:括号是否匹配
时间:2019-10-15
本文章向大家介绍面试题之:括号是否匹配,主要包括面试题之:括号是否匹配使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1、写一个函数,判断括号是不是匹配,括号有三种 可以嵌套, [](()){}
2、给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例 1:
输入: “{[]}”
输出: true
示例 2:
输入: “([)]”
输出: false
代码如下:
<html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> .result{ margin-top: 30px; padding: 20px 10px; border: 1px solid #999; background-color: beige } </style> </head> <body> <p> 1、写一个函数,判断括号是不是匹配,括号有三种 可以嵌套, [](()){}<br/> 2、给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。 <p>有效字符串需满足:</p> 左括号必须用相同类型的右括号闭合。<br/> 左括号必须以正确的顺序闭合。<br/> 注意空字符串可被认为是有效字符串。<br/> 示例 1:<br/> 输入: “([)]”<br/> 输出: false<br/> 示例 2:<br/> 输入: “{[]}()”<br/> 输出: true </p> <input type="text" id="input" placeholder="请输入" /> <button onclick="set()">开始匹配</button> <div class="result"> 结果:<div id="result"></div> </div> </body> <script> const moduleJson = { // 需要匹配的模板 ')': '(', '}': '{', ']': '[' } let result = document.getElementById('result') // 结果显示 function set(){ let str = document.getElementById('input').value if(!str){ alert('请输入!') } this.match(str) } function match(str){ let tempSaveArray = [] // 栈 // 用户存储数据 let len = str.length // length 可以用于返回字符串 / 数组 的长度 // 入栈 for(let i = 0; i< str.length; i++){ for(let key in moduleJson){ if(str[i] == key || str[i] == moduleJson[key]){ // 如果是括号,就入栈 tempSaveArray.push(str[i]) } } } // 判断栈的长度 if(tempSaveArray.length){ if((tempSaveArray.length % 2) != 0){ //为奇数,肯定不匹配 result.innerText = '不匹配!' }else{ for(let j = 0; j < tempSaveArray.length; j++){ if(moduleJson[tempSaveArray[j]]){ // 如果是括号,就和前一个匹配 if(j > 0){ // 不能为第一个 if(moduleJson[tempSaveArray[j]] == tempSaveArray[j-1]){ // 与前一个元素匹配 tempSaveArray.splice(j-1, 2) //出栈 splice(index, howmany, item) j = 0 // 重新遍历数组 } } } } // 判断栈中是否还有数据 if(tempSaveArray.length){ result.innerText = 'false' }else{ result.innerText = 'true' } } }else{ result.innerText = '输入的字符串中不包含需要匹配的括号!' } } </script> </html>
原文地址:https://www.cnblogs.com/bala/p/11677518.html
- Spring Cloud中Hystrix的请求合并
- Spring Cloud中Hystrix的请求缓存
- mysql主从复制配置
- Spring Cloud系列勘误
- Spring Cloud Stream使用细节
- Redis3 对集群进行重新分片
- Spring Cloud Stream初窥
- jquery事件绑定性能测试
- Spring Cloud Bus整合Kafka
- 图解Mac下如何安装管理MySQL
- Spring Cloud Bus整合RabbitMQ
- 结合Scikit-learn介绍几种常用的特征选择方法(下)
- Spring Cloud Bus之RabbitMQ初窥
- 结合Scikit-learn介绍几种常用的特征选择方法(上)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- K8s上的Go服务怎么扩容、发版更新、回滚、平滑重启?教你用Deployment全搞定!
- 图解Go内存管理器的内存分配策略
- why哥这里有一道Dubbo高频面试题,请查收。
- 「容器平台」Kubernetes网络策略101
- 架构师之路 - 服务器硬件扫盲
- 零基础Python教程045期 元组的增删改查测试实验
- 零基础Python教程044期 列表的函数方法,很耐用!
- 零基础Python教程047期 GUI窗体界面编程,迈出软件开发的第一步
- 零基础Python教程046期 矩阵行列互换算法,二维数组的典型应用
- 有一次小明传数据给我,把我弄哭了
- Java删除空字符:Java8 & Java11
- 6k+点赞的SpringBoot+Netty分布式即时通讯系统!爱了爱了!
- Day63:数据流中的中位数
- Prometheus是什么?
- Day64:滑动窗口的最大值