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

有效字符串需满足:

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

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

示例 1:

输入: "()"
输出: true

示例 2:

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

示例 3:

输入: "(]"
输出: false

示例 4:

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

示例 5:

输入: "{[]}"
输出: true
class Solution:
def isValid(self, s):
stack = []
flag = 1
if(len(s)%2!=0): #如果长度为奇数则一定没有匹配成功
flag = 0
else:
for i in range(len(s)):
if s[i] == "(" or s[i] == "[" or s[i] == "{":
stack.append(s[i])
continue
if stack:
a = stack[len(stack)-1] #取栈顶元素
if s[i] == ")": #如果括号可以匹配成功,则相应的左括号右括号的位置是相对的,所以可以取出栈顶元素进行比较
if a != "(":
flag = 0
stack.pop() elif s[i] == '}':
if a != "{":
flag = 0
stack.pop()
elif s[i] == "]":
if a != "[":
flag = 0
stack.pop()
if stack != []: #如果扫描过一遍仍有元素在栈内,说明有的括号没有匹配到,则没有匹配成功
flag = 0
if flag == 1:
return True
else:
return False

这个代码还没有Bugfree,有时间我会改进的~~,欢迎大家指出我的错误和不足之处~~~一起加油~

最新文章

  1. Getting Started with Blocks
  2. 【Linux】/dev/null 2>&1 详解
  3. 取出type="button" 和type="text" 里面的值显示在页面
  4. HTTPS传输协议原理
  5. javascript中数组的concat()方法 - 数组连接
  6. 3-07. 求前缀表达式的值(25) (ZJU_PAT数学)
  7. Infix to postfix conversion 中缀表达式转换为后缀表达式
  8. 模板方法模式(Tempalte Method Pattern)
  9. 2017-07-10(lastlog rpm yum)
  10. Java之Iterator
  11. Tag功能介绍—我们为什么打Tag?
  12. PLINQ的 ForAll 对比集合的ForEach
  13. tomcat7 server.xml max thread
  14. @EnableWebMvc
  15. Linux内核设计与实现 第四章
  16. Page3:组合系统状态空间输入输出描述、矩阵指数函数性质[Linear System Theory]
  17. Almost Union-Find (并查集+删除元素)题解
  18. Win2008R2配置WebDeploy(转)
  19. winform窗体 种类、普遍常用的【属性】
  20. Java多线程实现异步调用

热门文章

  1. SpringMVC笔记——SSM框架搭建简单实例
  2. python之内置函数,匿名函数
  3. Java学习---IO操作
  4. 乘风破浪:LeetCode真题_001_TwoSum
  5. [BZOJ 1592] Making The Grade路面修整
  6. Queue<T>队列与Stack<T>堆栈
  7. Java并发案例04---Future和 FutureTask
  8. [HNOI2003]多边形
  9. Scrum培训小体会
  10. 3、RabbitMQ-work queues 工作队列