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

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。

注意空字符串可被认为是有效字符串。

示例 1:

输入: "()"
输出: true

示例 2:

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

示例 3:

输入: "(]"
输出: false

示例 4:

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

示例 5:

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

括号匹配嘛,最近点的栈问题。

Code

 def isValid(self, s: str) -> bool:if len(s) % 2 != 0:return Falsestack = []for c in list(s):if c in ['(', '[', '{']:stack.append(c)elif c == ')' and (len(stack) == 0 or stack.pop() != '('):return Falseelif c == ']' and (len(stack) == 0 or stack.pop() != '['):return Falseelif c == '}' and (len(stack) == 0 or stack.pop() != '{'):return Falsereturn len(stack) == 0

复杂度分析

  • 时间复杂度:O(n)O(n)O(n),其中 nnn 是字符串 sss 的长度。

  • 空间复杂度:O(n+∣Σ∣)O(n + |\Sigma|)O(n+∣Σ∣),其中 Σ\SigmaΣ 表示字符集,本题中字符串只包含 666 种括号,∣Σ∣=6|\Sigma| = 6∣Σ∣=6。栈中的字符数量为 O(n)O(n)O(n),而哈希映射使用的空间为 O(∣Σ∣)O(|\Sigma|)O(∣Σ∣),相加即可得到总空间复杂度。

20. Valid Parentheses 有效的括号相关推荐

  1. 20. Valid Parentheses

    判断括号是否匹配 知道要用栈来做,但是过程还是想了一会儿,哎 1 bool isValid(char* s) { 2 int len = 0; 3 while(s[len++] != '\0'); 4 ...

  2. Leet Code OJ 20. Valid Parentheses [Difficulty: Easy]

    题目: Given a string containing just the characters , determine if the input string is valid. The brac ...

  3. leetcode python3 简单题20. Valid Parentheses

    1.编辑器 我使用的是win10+vscode+leetcode+python3 环境配置参见我的博客: 链接 2.第二十题 (1)题目 英文: Given a string containing j ...

  4. LeetCode: 20. Valid Parentheses

    0509第1题(虽然是08做的,但这会已经09了) 题目 Given a string containing just the characters '(', ')', '{', '}', '[' a ...

  5. [LeetCode]--20. Valid Parentheses

    Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the inpu ...

  6. 20 Valid Parentheses

    1 题目理解 输入:一个字符串s,只包含( ) { } [ ]这六种字符. 输出:字符串是否有效 规则:一个有效的字符串需要括号对应匹配,并且要左括号在前. 举例: 1 输入s="()&qu ...

  7. LeetCode 20 Valid Parentheses (C++)

    问题: Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the ...

  8. [swift] LeetCode 20. Valid Parentheses

    Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the inpu ...

  9. 20.Valid Parentheses (python)

    这道题主要用栈来实现的.什么是栈呢,参照书上的后缀表达式的例子谈谈自己的理解,栈最明显的特征是先进后出.所以可以有效的结合题目中 ()对匹配问题,可以把从列表中获取的符号先存到栈中. 首先建个空列表用 ...

最新文章

  1. 二叉树:二叉搜索树的编码和解码
  2. Linux上PHP加入环境变量
  3. 《深入理解java虚拟机》笔记2——GC算法与内存分配策略
  4. Kubernetes-服务连接和暴露(endpoints)(二十)
  5. 如何利用OUTLOOK提高你的工作效率
  6. GPU服务器硬件及软件
  7. 关于MSHTML控件使用的问题
  8. python交通流预测算法_基于遗传算法优化LSTM神经网络的交通流预测方法与流程...
  9. abb机器人goto指令用法_abb机器人编程指令,机器人编程的程序指令
  10. 网络邻居上不显示计算机,网上邻居不显示或找不到自己电脑怎么办?
  11. R数据分析:论文中的轨迹的做法,潜增长模型和增长混合模型
  12. word压缩文件大小,word压缩方法
  13. 小甲鱼Python第十九讲(函数,我的地盘听我的)
  14. 13.2-“制作一款私有IAP串口下载小工具”之串口IAP的通信协议设计
  15. 连载:面向对象葵花宝典:思想、技巧与实践(27) - 动态模型设计
  16. 上海域格ASR和高通模块 USB端口分配及Linux下拨号说明
  17. 2023 USAMO(美国数学奥林匹克)试题答案解析
  18. C语言编程 5.7 从键盘中输入一个英文字母,如果它是大写则转化为小写。如果它是小写则转化为大写,并将其ASCll码显示到屏幕上。
  19. pythonsklearn做手写识别_Python scikit-learn 学习笔记—手写数字识别
  20. Linux服务器上设置全局代理访问外网并验证

热门文章

  1. 虚拟机安装CentOS,网络配置
  2. N!-201308071627.txt
  3. HDU 1063 Exponentiation
  4. python论文格式检查系统_论文格式检查软件
  5. java 断点续传组件_chunkupload 文件上传断点续传组件(java) - 正式发布
  6. OpenCV C++ 08 - Homogeneous Blur on Images with OpenCV
  7. ruby on rails 站点
  8. Python面向对象编程Day 25部分知识点
  9. 开始食用grpc(之一)
  10. 交换机的一些常见网络命令