美文网首页算法每日一刷
LeetCode算法题-32. 最长有效括号(Swift)

LeetCode算法题-32. 最长有效括号(Swift)

作者: entre_los_dos | 来源:发表于2019-10-22 22:22 被阅读0次

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-valid-parentheses
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题目

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

示例 1:

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

示例 2:

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

方法1:从左遍历,然后从右遍历。

func longestValidParentheses(_ s: String) -> Int {
        
        var result = 0
        var left = 0
        var right = 0
        
        for char in s {
            
            if char == "(" {
                left += 1
            }else {
                right += 1
            }
            
            if left == right {
                result = max(result, 2*left)
            }else if right > left {
                left = 0
                right = 0
            }
        }
        
        left = 0
        right = 0
        
        for char in s.reversed() {
            
            if char == "(" {
                left += 1
            }else {
                right += 1
            }
            
            if left == right {
                result = max(result, left * 2)
            }else if left > right {
                right = 0
                left = 0
            }
        }
        
        return result
    }

相关文章

网友评论

    本文标题:LeetCode算法题-32. 最长有效括号(Swift)

    本文链接:https://www.haomeiwen.com/subject/bmdcvctx.html