• 【leetcode】32. Longest Valid Parentheses


    题目如下:

    解题思路:从头开始遍历string,用left和right分别表示左括号和右括号的数量,并用index记录起始下标。如果遇到left = right,表示这一段区间是合法的括号子串;如果right > left,表明这一段区间是不合法的,需要从index开始依次右移缩短区间,直到left = right为止;如果left > right的话,继续遍历。遍历完成后,求出最长的一段合法区间即可。但是这种方法对于输入string = "(()"是不适用的,因为直到遍历完成,也没有出现left = right的区间。那怎么解决这个问题呢,合法的括号区间是具有对称性的,那么只要再计算一遍string的镜像的最长合法区间,再和原string的最长合法区间求较大值,即为最终结果。

    代码如下:

    class Solution(object):
        def getLongest(self,s):
            left = 0
            right = 0
            startInx = 0
            res = 0
            for i in xrange(len(s)):
                if s[i] == '(':
                    left += 1
                else:
                    right += 1
                while left < right:
                    if s[startInx] == '(':
                        left -= 1
                    else:
                        right -= 1
                    startInx += 1
                if left == right:
                    res = max(res, i - startInx + 1)
            return res
        def longestValidParentheses(self, s):
            """
            :type s: str
            :rtype: int
            """
            res = self.getLongest(s)
            rs = ''
            #求s的镜像
            for i in s[::-1]:
                if i == '(':
                    rs += ')'
                else:
                    rs += '('
            res = max(res,self.getLongest(rs))
            return res
  • 相关阅读:
    Axure RP
    简单实现SSO
    php Header 函数使用
    使用 PHP SOAP 来创建一个简单的 Web Service。
    简单 php 代码跟踪调试实现
    js打开新窗口,打开新窗口屏蔽工具栏和地址栏,窗口按规定大小显示
    PHP 面向切面编程
    Shell 简单构建 Node web服务器
    thinkphp 迁移数据库 -Phinx 简单说明文档
    magento 2 method config
  • 原文地址:https://www.cnblogs.com/seyjs/p/9342037.html
Copyright © 2020-2023  润新知