给定一个只包括 (){}[] 的字符串 判断字符串是否有效
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例 1:
输入: "()"
输出: true
示例 2:
输入: "()[]{}"
输出: true
示例 3:
输入: "(]"
输出: false
示例 4:
输入: "([)]"
输出: false
示例 5:
输入: "{[]}"
输出: true
解题思路
- 判断字符串的长度如果为奇数直接返回 false
- 如果为偶数,则分别以成对扩号的左半部分为键,右半部分为值创建一个对象
- 把字符串转换成数组,并定义一个临时数组 result=[]
- 遍历数组如果临时数组的最后一项存在且等于当前项,则临时数组做出栈 pop 操作,否则把当前项的 map 值 push 放进数组
- 如果最终临时数组的长度大于零(说明部分括号不符合成对规则)返回 false
- 如果临时数组长度为零 返回 true
* @param {string} s * @return {boolean} */ var isValid = function(s) { let len=s.length,result=[]; if(len%2!==0){ return false }else{ const map={ '{':'}', '(':')', '[':']' } s=s.split('') for(let i=0;i<len;i++){ let length=result.length if(result[length-1] && result[length-1]==s[i]){ result.pop() }else{ result.push(map[s[i]]) } } } if(result.length>0){ return false } return true };
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: babel 插件开发原理理解
下一篇: 谈谈自己对于 AOP 的了解
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论