zoukankan      html  css  js  c++  java
  • Leetcode——32.最长有效括号【##】


    @author: ZZQ
    @software: PyCharm
    @file: leetcode32_最长有效括号.py
    @time: 2018/11/22 19:19

    要求:给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度。

    示例 1:
        输入: "(()"
        输出: 2
        解释: 最长有效括号子串为 "()"
    
    示例 2:
        输入: ")()())"
        输出: 4
        解释: 最长有效括号子串为 "()()"
    

    思路:

         1)max_len 用于记录当前匹配最长的括号长度。
         2)s_dict用来存储遇到的左括号的下标。
         3)start存储有效的起始下标。
         4)遇到左括号,下标入栈
         5)遇到右括号,a.如果此时s_dict为空,则更新start的值
                     b. 否则,s_dict栈顶元出栈,此时,
                            b.1.如果是栈为空,记录当前匹配到的子串长度【i到start之间的距离,包含start】i-start+1,更新max_len的值;
                            b.2.如果栈非空,后面可能还会继续匹配,先记录当前匹配到的子串长度【i到栈顶元素下标之间的距离】i-s_dict[-1],更新max_Len的值。
    

    AC代码如下:

    class Solution():
        def __init__(self):
            pass
    
        def longestValidParentheses(self, s):
            """
            :type s: str
            :rtype: int
            """
            s_len = len(s)
            max_len = 0
            s_dict = []
            i = 0
            start = 0
            while i < s_len:
                if s[i] == '(':
                    s_dict.append(i)
                else:
                    if len(s_dict) == 0:
                        i += 1
                        start = i
                        continue
                    else:
                        s_dict.pop()
                        if len(s_dict) == 0:
                            max_len = max(max_len, i-start+1)
                        else:
                            max_len = max(max_len, i-s_dict[-1])
                i += 1
            return max_len
    
    
    if __name__ == "__main__":
        answer = Solution()
        print(answer.longestValidParentheses("(())((()"))
    
  • 相关阅读:
    利用windows 127.0.0.1:30000 代理在linux下工作
    nginx与ssh 把内网转为公网开发服务器
    php errorlog 记录
    dockerfile php 开发
    ubuntu
    k8s 1.9.1 centos7 install 离线安装
    kubernetes
    linux字符设备驱动--基本知识介绍
    linux应用程序设计--Makefile工程管理
    linux应用程序设计--GDB调试
  • 原文地址:https://www.cnblogs.com/zzq-123456/p/10007426.html
Copyright © 2011-2022 走看看