Q20 Valid Parentheses

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

The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]" are not.

解题思路:

模拟栈的操作,如果是(、[、},则入栈;如果是 )、]、},则出栈。如果匹配正确,最后栈为空,说明字符串有效。

Python实现:
class Solution:
    def isValid(self, s):
        """
        :type s: str
        :rtype: bool
        """
        if len(s) == 0:
            return False
        if s[0] != '(' and s[0] != '[' and s[0] != '{':
            return False
        stack = []  # 模拟栈的操作
        for i in range(len(s)):
            if s[i] == '(' or s[i] == '[' or s[i] == '{':
                stack.append(s[i])
            else:
                if len(stack) == 0:  # 栈中没有匹配 (、[、{ 的字符
                    return False
                ch = stack.pop()
                if ch == '(' and s[i] != ')' or ch == '[' and s[i] != ']' or ch == '{' and s[i] != '}':
                    return False
        if len(stack) == 0:
            return True
        else:
            return False

a = '[])'
b = Solution()
print(b.isValid(a))  # false

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Leetcode【473、698】

    因此,这道题和下面的 Leetcode 698 几乎相同,Leetcode 698 是划分成 k 组,而这道题是划分成 4 组,因此我们把 Leetcode 6...

    echobingo
  • 剑指offer【40~49】

    时间复杂度为:插入为 O(logn),计算中位数为 O(1);空间复杂度:O(n)。

    echobingo
  • 【DP、Greedy】416. Partition Equal Subset Sum

    Given a non-empty array containing only positive integers, find if the array can...

    echobingo
  • 最优的素数判断代码(Python)是这样写出来的

    素数判断是个很经典的问题,各种语言的程序设计课程都会涉及到,按照素数定义(除了1和自身,素数没有其他因数)很容易写出下面的代码: def isPrime1(n...

    Python小屋屋主
  • 理解和适配AEAD加密套件

    按照维基百科的说法。AEAD的全称是Authenticated encryption (AE) and authenticated encryption wit...

    owent
  • 一次由查询转换引起的性能问题的分析

    作者介绍 郭成日 云和恩墨北区技术工程师 专注于SQL审核和优化相关工作。曾经服务的客户涉及金融保险、电信运营商、政府、生产制造等行业。 在优化器进行查询转换...

    数据和云
  • 如何在Debian上安装Node.js和NGINX

    Node.js是一个JavaScript平台,可以提供动态的响应式内容。JavaScript通常是一种客户端浏览器语言,如HTML或CSS。但是,Node.js...

    双愚
  • 【图文并茂】源码解析MyBatis Sharding-Jdbc SQL语句执行流程详解

    本文将详细介绍Mybatis SQL语句执行的全流程,本文与上篇具有一定的关联性,建议先阅读该系列中的前面3篇文章,重点掌握Mybatis Mapper类的初始...

    丁威
  • 干货|不好意思,干活的真的比不上做PPT的(1)

    干活的比不上做PPT的可能是很多职场人心中的一大痛。实际上对于数据分析师来说,做PPT可能是你的硬技能。

    二号姬
  • SSH 通过密钥配置免密登陆主机

    这一步会提示输入密钥存放位置、名称、密码等,可以一直回车使用默认值。 新生成的密钥对会覆盖原密钥。

    SkyRiN

扫码关注云+社区

领取腾讯云代金券