@author: ZZQ

@software: PyCharm

@file: IsValid.py

@time: 2018/9/16 20:20

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

有效字符串需满足:

1)左括号必须用相同类型的右括号闭合。

2)左括号必须以正确的顺序闭合。

class Solution():
def __init__(self):
pass def isCouple(self, str1, str2):
if str1 == '(' and str2 == ')':
return True
else:
if str1 == '[' and str2 == ']':
return True
else:
if str1 == '{' and str2 == '}':
return True
else:
return False def isValid(self, s):
"""
:type s: str
:rtype: bool
"""
stack = []
length = len(s)
for i in range(0, length):
if s[i] == '(' or s[i] == '[' or s[i] == '{':
stack.append(s[i])
if len(stack) == length:
return False
else:
if len(stack) == 0:
return False
flag = self.isCouple(stack[-1], s[i])
if flag:
stack.pop(-1)
else:
return False
if len(stack) != 0:
return False
return True def isValid2(self, s):
a = {')': '(', ']': '[', '}': '{'}
l = [None]
for i in s:
if i in a and a[i] == l[-1]:
l.pop()
else:
l.append(i)
print(l)
return len(l) == 1 # 最终要保证栈中的元素为空 if __name__ == "__main__":
str = "()[]{}"
# str = "(]"
# str = "([)]"
# str = "{[]}"
str = "([]"
answer = Solution()
print(answer.isValid2(str))

Leetcode题库——20.有效的括号的更多相关文章

  1. leetcode题库

    leetcode题库 #题名题解通过率难度出现频率  1 两数之和     46.5%简单2 两数相加     35.5%中等3 无重复字符的最长子串     31.1%中等4 寻找两个有序数组的中位 ...

  2. leetcode题库练习_数组中重复的数字

    题目:数组中重复的数字 找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次 ...

  3. leetcode题库解答源码(python3)

    下面和大家分享本人在leetcode上已经ace的题目源码(python3): 本人会持续更新!- class Leetcode_Solution(object): def twoSum_1(self ...

  4. Leetcode题库——35.搜索插入位置

    @author: ZZQ @software: PyCharm @file: searchInsert.py @time: 2018/11/07 19:20 要求:给定一个排序数组和一个目标值,在数组 ...

  5. Leetcode题库——28.实现strStr()

    @author: ZZQ @software: PyCharm @file: strStr.py @time: 2018/11/6 20:04 要求:给定一个 haystack 字符串和一个 need ...

  6. Leetcode题库——24.两两交换链表中的节点

    @author: ZZQ @software: PyCharm @file: swapPairs.py @time: 2018/10/20 19:49 说明:给定一个链表,两两交换其中相邻的节点,并返 ...

  7. Leetcode题库——16.最接近的三数之和

    @author: ZZQ @software: PyCharm @file: threeSumClosest.py @time: 2018/10/14 20:28 说明:最接近的三数之和. 给定一个包 ...

  8. Leetcode题库——8.字符串转为整数【##】

    @author: ZZQ @software: PyCharm @file: myAtoi.py @time: 2018/9/20 20:54 要求:实现 atoi,将字符串转为整数. 1)根据需要丢 ...

  9. Leetcode题库——6.Z字形变换

    @author: ZZQ @software: PyCharm @file: convert.py @time: 2018/9/20 20:12 要求: Z字形变换 将字符串 "PAYPAL ...

随机推荐

  1. iOS/OSX漏洞分析和再现:CVE-2019-7286

    iOS 12.1.4是2019年2月8日发布的iOS的最新版本.该版本修补了iOS上发现的四个漏洞.根据Project Zero的Ben Hawkes的推文,其中至少有两个0day还是处于在野状态…… ...

  2. 面向对象之final关键字

    1.1     final的概念 final是个修饰符,它可以用来修饰类,类的成员,以及局部变量.不能修饰构造方法. 问题: 继承的出现提高了代码的复用性,并方便开发.但随之也有问题,有些类在描述完之 ...

  3. 【NoSql】之Hbase

    Hbase概述 ·  Hbase是构建在hdfs上的分布式列式存储系统 ·  Hbase内部管理的文件全部存储在HDFS上面, ·  Hbase是基于google bigtable 模型开发的,典型的 ...

  4. delphi黑色背景模式

    uses Vcl.Styles, vcl.Themes; procedure TForm1.FormCreate(Sender: TObject); begin TStyleManager.LoadF ...

  5. Scala_类和对象

    类是对象的抽象,而对象是类的具体实例.类是抽象的,不占用内存,而对象是具体的,占用存储空间. import scala.beans.BeanProperty class ChecksumAccumul ...

  6. 2015539平措卓玛课堂测试(ch06)

    课堂测试(ch06) 1.下面代码中,对数组x填充后,采用直接映射高速缓存,所有对x和y引用的命中率为(D) A .1 B .1/4 C .1/2 D .3/4 解析:缓存命中:当程序需要第(k+1) ...

  7. 3-[Mysql]-库操作

    1.系统数据库 information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息.列信息.权限信息.字符信息等 performance_schema: My ...

  8. Codeforces 909 D. Colorful Points (模拟)

    题目链接: Colorful Points 题意: 给出一段字符串(长度最大为1e6),每次操作可以删除字符串中所有相邻字符与其不同的字符.例如:aabcaa 删除一次就变成了aa,就无法再删除了.题 ...

  9. sublime常用方法

    1.如何打开一个文件夹? project----->Add Folder to Project 2.如何同一个窗口下进行分屏操作? 使用快捷键:shift+Alt+2 3.如何使html代码进行 ...

  10. 图片隐写--XOR&OR&and

    图片xor的脚本 和图片进行xor or and 运算的脚本 from PIL import Image #import pil def loadImage(filename): img = Imag ...