zoukankan      html  css  js  c++  java
  • Longest Valid Parentheses

    问题:给定一个只包含 "(" 和 ")" 的字符串,寻找其括号配对的最长子串,输出其长度

    示例:

    输入:"())"               输出:2

    输入:"(()()()("          输出:6

    解决思路:利用栈来解决,遍历索引进行压栈和弹栈,最后栈中只剩下没有配对成功的索引位置,配对成功的子串长度记为栈中的相邻元素之差减1

    Python代码:

    class Solution(object):
        def longestValidParentheses(self, s):
            """
            :type s: str
            :rtype: int
            """
            if not s:
                return 0
            stack = []
            for i in range(len(s)):
                if not stack or s[i] == "(":
                    stack.append(i)
                else:
                    if s[stack[-1]] == "(":
                        stack.pop()
                    else:
                        stack.append(i)
                        
            stack = [-1]+stack+[len(s)]
            longest = 0
            for i in range(len(stack)-1):
                length = stack[i+1]-stack[i]-1
                if longest < length:
                    longest = length
            return longest
  • 相关阅读:
    常用英语1000句
    TXT EXPLORER
    窗体美化
    C++ Code_StatusBar
    C++ Code_Slider
    C++ Code_ScrollBar
    C++ Code_ImageList
    C++ Code_HotKey
    C++ Code_animateCtrl
    C++ CheckMenuItem
  • 原文地址:https://www.cnblogs.com/wenqinchao/p/10715320.html
Copyright © 2011-2022 走看看