首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
有效括号序列
[编程题]有效括号序列
热度指数:311957
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 256M,其他语言512M
算法知识视频讲解
给出一个仅包含字符
'(',')','{','}','['和']',
的字符串,判断给出的字符串是否是合法的括号序列
括号必须以正确的顺序关闭,
"()"和"()[]{}"
都是合法的括号序列,但
"(]"
和
"([)]"不合法
。
数据范围:字符串长度
要求:空间复杂度
,时间复杂度
示例1
输入
"["
输出
false
示例2
输入
"[]"
输出
true
马上挑战
算法知识视频讲解
提交运行
算法知识视频讲解
添加笔记
求解答(21)
邀请回答
收藏(1068)
分享
提交结果有问题?
451个回答
420篇题解
开通博客
鸠摩罗什
发表于 2021-07-18 19:57:47
精华题解
描述 给出一个仅包含字符'(',')','{','}','['和']',的字符串,判断给出的字符串是否是合法的括号序列括号必须以正确的顺序关闭,"()"和"()[]{}&quo
展开全文
牛客题解官
发表于 2022-04-22 12:16:08
精华题解
题目主要信息: 给定一个只包含大中小左右括号的字符串,判断其中括号是否合法 大中小括号的数学顺序与合法无关,只需要每种左括号在右边有相应匹配的右括号即可,不可交叉匹配,应该是括号嵌套 举一反三: 学习完本题的思路你可以解决如下题目: BM49. 表达式求值 方法:栈(推荐使用) 知识点:栈 栈是
展开全文
Maokt
发表于 2021-07-14 11:15:08
精华题解
算法思想一:栈+哈希表 解题思路: 算法流程 1、构建哈希表 k,其中key为 右括号,value为左括号 2、遍历字符串 1、判断字符是否在 k.values() 中; &nb
展开全文
未来0116
发表于 2021-07-13 12:12:38
精华题解
一.题目描述NC52括号序列题目链接:https://www.nowcoder.com/practice/37548e94a270412c8b9fb85643c8ccc2?tpId=196&&tqId=37083&rp=1&ru=/activity/oj&qr
展开全文
咕咕鸡思密达
发表于 2020-11-19 15:19:31
1.压栈和取栈'(','[','{' 这三个就压栈')',']','}' 这三个就取栈,取栈时判断一下是不是对应的括号,如果是就取栈成功,不是就不能取。这样最后看栈是不是为空,不为空就说明顺序不正确 2.字符替换 boolean flag = true; while(
展开全文
数据结构和算法
发表于 2021-03-19 09:00:22
要判断括号的有效性,左括号必须和右括号相对应。如果是有效括号,并且他们中间还有括号,那么他们必须也是有效的,所以最简单的一种方式就是使用栈来解决。 我们遍历字符串中的所有字符 1,如果遇到了左括号,就把对应的右括号压栈(比如遇到了字符'(',就把字符')'压栈)。2,如果遇到了右括号 1)查看
展开全文
_Pure_white_
发表于 2020-11-16 18:53:40
用字典简化代码量 class Solution: def isValid(self , s ): k = {'}':'{', ')':'(', ']':'[' } stack = [] for a in s: if a
展开全文
王清楚
发表于 2020-11-19 12:27:23
题目中给出的字符串仅包含字符'(',')','{','}','['和']',对字符串中的每一个字符进行遍历,如果是右括号的话,需要看一下栈顶元素是不是和它匹配的左括号。如果是的话,那这两个括号是一对,让栈顶元素出栈不满足配对条件的话,就让该元素进栈如果字符串是一个合法的括号序列,那么整个字符串遍历完
展开全文
萨根的喷火龙
发表于 2021-10-21 17:30:06
注意这里,not [],not一个空列表,返回的是True;not [1,2],not一个非空列表,返回是False。这里是为了检测是否是空列表 # # # @param s string字符串 # @return bool布尔型 # class Solution: def isVali
展开全文
牛客564152510号
发表于 2022-06-01 11:25:31
/** * * @param s string字符串 * @return bool布尔型 */ function isValid( s ) { // write code here  
展开全文
我和我
发表于 2021-11-07 22:35:01
public class Solution { /** * * @param s string字符串 * @return bool布尔型 */ public boolean isValid (String s) { // w
展开全文
honokawings
发表于 2022-03-20 02:18:11
C语言数组实现栈 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @return bool布尔型 * * C语言声明定义全局变量请加上static,防止重复定义 */ char trans(cha
展开全文
过河卒3
发表于 2022-08-26 16:02:26
class Solution: def isValid(self , s: str) -> bool: # write code here while s
展开全文
Galaxy_Lee
发表于 2022-03-15 13:11:46
解题思路: 非常经典的栈的使用案例 - 括号匹配,只不过这道题难度降低了很多 判断是左括号就入栈 碰到右括号的时候,从栈顶弹出一个元素,看右括号是否与栈顶元素的左括号匹配,不匹配就返回False 整个入栈出栈结束以后看栈内是否还有元素,还有元素就说明匹配失败 # 代码中的类名、方法名、参数名已经
展开全文
问题信息
字符串
栈
难度:
451条回答
1068收藏
34027浏览
热门推荐
通过挑战的用户
查看代码
牛客65488...
2023-01-31 19:12:46
牛客67688...
2022-12-07 13:58:39
信达雅
2022-11-26 13:12:57
兜小弟
2022-11-13 10:57:05
曾罗
2022-10-28 16:11:48
相关试题
明明的随机数
数组
评论
(3693)
来自
华为研发工程师编程题
分页系统的逻辑地址结构是一维的,分...
操作系统
评论
(1)
关于分段系统与分页系统的区别,描述...
操作系统
评论
(1)
已知a
40
=...
京东
职能
2019
财务
保险
评论
(1)
有20000人的就餐需求,现建了一...
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @return bool布尔型 */ public boolean isValid (String s) { // write code here } }
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @return bool布尔型 */ bool isValid(string s) { // write code here } };
#coding:utf-8 # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param s string字符串 # @return bool布尔型 # class Solution: def isValid(self , s ): # write code here
using System; using System.Collections.Generic; class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @return bool布尔型 */ public bool isValid (string s) { // write code here } }
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @return bool布尔型 */ function isValid( s ) { // write code here } module.exports = { isValid : isValid };
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param s string字符串 # @return bool布尔型 # class Solution: def isValid(self , s: str) -> bool: # write code here
package main import "fmt" /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @return bool布尔型 */ func isValid( s string ) bool { // write code here }
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @return bool布尔型 */ bool isValid(char* s ) { // write code here }
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param s string字符串 # @return bool布尔型 # class Solution def isValid(s) # write code here end end
object Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @return bool布尔型 */ def isValid(s: String): Boolean = { // write code here } }
object Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @return bool布尔型 */ fun isValid(s: String): Boolean { // write code here } }
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @return bool布尔型 */ public boolean isValid (String s) { // write code here } }
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @return bool布尔型 */ export function isValid(s: string): boolean { // write code here }
public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @return bool布尔型 */ func isValid ( _ s: String) -> Bool { // write code here } }
struct Solution{ } impl Solution { fn new() -> Self { Solution{} } /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @return bool布尔型 */ pub fn isValid(&self, s: String) -> bool { // write code here } }
"["
false
"[]"
true