设为首页 - 加入收藏  
您的当前位置:首页 >应用开发 >每日算法:有效的括号 正文

每日算法:有效的括号

来源:亿华互联编辑:应用开发时间:2025-11-05 05:09:13

 

给定一个只包括 ( ,每日) ,算法{ ,有效} ,每日[ ,算法] 的有效字符串,判断字符串是每日否有效。

有效字符串需满足:

左括号必须用相同类型的算法右括号闭合。 左括号必须以正确的有效顺序闭合。

注意空字符串可被认为是每日有效字符串。云南idc服务商

示例 1:

输入: "()" 输出: true 

示例 2:

输入: "()[]{}" 输出: true 

示例 3:

输入: "(]" 输出: false 

示例 4:

输入: "(]" 输出: false 

示例 5:

输入: "([)]" 输出: false 

解答:利用栈结构

解题思路: 将字符串中的算法字符依次入栈,遍历字符依次判断:

首先判断该元素是有效否是 { 、 ( 、每日 [ ,算法直接入栈 否则该字符为 } 、有效 ) 、 ] 中的一种,如果该字符串有效,则该元素应该与栈顶匹配,例如栈中元素有 ({,亿华云计算 如果继续遍历到的元素为 ), 那么当前元素序列为 ({) 是不可能有效的,所以此时与栈顶元素匹配失败,则直接返回 false ,字符串无效

当遍历完成时,所有已匹配的字符都已匹配出栈,如果此时栈为空,则字符串有效,如果栈不为空,说明字符串中还有未匹配的字符,亿华云字符串无效

画图帮助理解一下:

代码实现:

const isValid = function(s) {     let map = {         {: },         (: ),         [: ]     }     let stack = []     for(let i = 0; i < s.length ; i++) {         if(map[s[i]]) {             stack.push(s[i])         } else if(s[i] !== map[stack.pop()]){             return false         }     }     return stack.length === 0 }; 

时间复杂度:O(n)

空间复杂度:O(n)

0.1065s , 11663.9609375 kb

Copyright © 2025 Powered by 每日算法:有效的括号,亿华互联  滇ICP备2023000592号-16

sitemap

Top