刚解析完回文字符串的思路,趁热打铁把判断表达式是否闭合也理一理。此题中闭合元素只考虑圆括号(),方括号[],大括号{}。三种。方法不止一种。这只是我能想到的。

如果单纯的判断表达式是否闭合,不返回未闭合元素的下标。

  • 1,提取表达式中所有括号;
  • 2, 数量为奇数或者依右括号开始}])直接返回false;
  • 3, 否则,判断是{,[(的时候入栈,否则出栈, 如果最后数量是0返回true,否则false
function isClose(str) {let len = str.length;let reg = /(\[|\]|\{|\}|\(|\))/g;let arr = str.match(reg);if (arr.length % 2 || /(\}|\]|\))/.test(arr[0])) {return false} else {let stack = [];while (arr.length) {let _v = arr.shift()if (/(\[|\{|\()/.test(_v)) {console.log(1);stack.push(_v)} else {stack.pop()}};console.log(stack)return !stack.length}
}
复制代码

判断是否闭合,并返回下标呢。

利用双指针加字典解法。

  • 1.设置头尾双指针。
  • 2.分别判断头尾两个指针对应的元素是否是闭合元素,如果不是闭合元素,头指针向右移动,尾指针向左移动,直到两个指针指向的都是闭合元素。
  • 3.判断头尾对应的元素是不是闭合元素,不是则返回下标,重复2步骤。
var dir = {"{": "}","[": "]","(": ")",")": "(","}": "{"
}function atWhereNoClose(str) {let len = str.length;let left = 0;let right = len - 1;let flg = true;while (left < right) {while (!/(\[|\{|\()/.test(str[left]) && left < right) {left++}while (!/(\}|\]|\))/.test(str[right]) && left < right) {right--}if (dir[str[left]] !== str[right]) {if (dir[str[left]] && left <= right) {flg = leftbreak;}} else {left++right--}}return flg;
}
console.log(atWhereNoClose("{[[ab}}"))
console.log(atWhereNoClose("{ab}"))
console.log(atWhereNoClose("{({[ab]})}"))
console.log(atWhereNoClose("ab}"))
复制代码

判断表达式是否正确闭合,返回未闭合元素的下标。相关推荐

  1. html判断手机号码正确,js判断手机号是否正确并返回的实现代码

    js判断手机号是否正确并返回的代码,具体代码如下所示: function abc() { var myreg = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1})) ...

  2. assert函数--判断表达式是否正确

    目录 assert的作用 assert所需要的头文件 assert的参数 assert函数的返回值 assert函数的细节 assert的作用 评估一个表达式,当它是错误的时候,打印一个诊断错误并且终 ...

  3. Django项目实战——8—(判断用户是否登录并返回JSON、Django发送邮件的配置、生成邮箱验证链接、验证邮箱后端逻辑)

    1.判断用户是否登录并返回JSON 重要提示: 只有用户登录时才能让其绑定邮箱. 此时前后端交互的数据类型是JSON,所以需要判断用户是否登录并返回JSON给用户. 方案一: 使用Django用户认证 ...

  4. 编程题-判断数独是否正确

    判断数独是否正确 绪论 这个题目是我在校招面试某家大公司的在线笔试题(不是BAT),当时第一次用程序做数独,时间也来不及,就没有很好的做出来.(在这里吐槽一下,一个小时10道选择10道填空,2道编程题 ...

  5. python 列表表达式 if_python中if else如何判断表达式成立?

    我们都知道,if是判断语句.那么在电脑程序中,我们就要输入自己想要的条件,然后得出一个结论.顺便要说的是if后面跟的条件没有限制,所以小伙伴们在使用的时候不用怕出错啦.那么,小编今天来讲讲python ...

  6. 判断表达式值是否为空_如何在 Python 中判断列表是否为空

    在判断列表是否为空时,你更喜欢哪种方式?决定因素是什么? 在 Python 中有很多检查列表是否是空的方式,在讨论解决方案前,先说一下不同方法涉及到的不同因素. 我们可以把判断表达式可以分为两个阵营: ...

  7. 判断年月日是否正确及获取当前天的前一天或前一个月

    Date类型 var d = new Date();//Date对象需要创建//Date 对象能够表示的日期范围约等于 1970 年 1 月 1 日前后各 285,616 年. alert(d);// ...

  8. MySQL——IF表达式把字段作为返回值讲解与实战

    IF表达式 IF(expr1,expr2,expr3) 作为在SQL级别进行统一的if判断,处理特定场景逻辑 如果表达式expr1为true(且不等于0和Null),则if语句返回表达式expr2,否 ...

  9. 身份证校验且提取年月日(判断日期是否正确)JS

    提取出生年月日 示例方法 示例方法 /*** 识别是否是身份证,且校验出生年月日是否正确* @param idCard* @returns {string|null}*/getBirthday(idC ...

最新文章

  1. 基础总结篇之一:Activity生命周期
  2. mac 查看端口_黑客克星养成记 系列二:MAC-Flooding原理及解决方案
  3. Kubernetes二次开发--Operator的使用
  4. php根据当前日期判断法定节假日_判断日期是否为法定节假日的API接口与示例函数...
  5. ES6-note-Set和Map(草稿)
  6. Python QT5
  7. 数据结构与算法(C#版)第二章 C#语言与面向对象技术(下)V1.0
  8. 互联网晚报 | 1月11日 星期二 | 恒大集团退租深圳总部大楼;荣耀发布首款折叠旗舰手机;虎牙拿下5年LPL独播权...
  9. Linux服务器性能评估(转)
  10. 暴露的全局方法_Dubbo源码解析实战 - 服务暴露原理
  11. java(14) - HashMap类
  12. 2021牛客寒假算法基础集训营1,签到题ABFIJ
  13. 46. 考虑使用函数对象而不是函数作为STL算法的参数
  14. linux mint 8812ac网卡,kali虚拟机连接无线网卡comfast cf-812AC(Realtek 8812BU芯片)(不支持wlan0mon)...
  15. LINUX编译ARM64/AARCH64版本的jogamp(gluegen/jogl)注意事项
  16. 【车位识别】基于matlab模板匹配车位识别【含Matlab源码244期】
  17. 乘风破浪,遇见未来新能源汽车(Electric Vehicle)之特斯拉提车必须知道的十个流程
  18. 如何解决未能初始化战场服务器,microsoft net framework配置系统未能初始化
  19. 教师资格证高中计算机资料,教师资格考试高中信息技术试题
  20. 2021-05-14

热门文章

  1. 用linux命令清空文件夹,技能包!Linux 下清空或删除大文件内容的 5 种方法
  2. cad怎么选择一个对象打散vba_CAD制图的二十四字秘诀!
  3. Linux(五):Ubuntu 16.04 更改系统语言为简体中文(Chinese simplified)
  4. python分布爬虫_13天搞定Python分布爬虫(第七天)(Scrapy)
  5. Python 柱状图 横坐标 名字_Python气象绘图教程(四)
  6. windows pip命令不见了_Python中Pygame以及pip的下载与安装
  7. python创建和控制的实体称为_Python eds包_程序模块 - PyPI - Python中文网
  8. 2021年高考成绩查询衡阳市八中,优秀!衡阳2020年各大高中成绩出炉!
  9. 2014计算机二级c语言试题及答案,2014计算机二级C语言测试题及答案解析六之二...
  10. 欧式理论计算机科学,理论计算机科学中几个问题.ppt