算法每日一刷

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

2019-10-22  本文已影响0人  entre_los_dos

来源:力扣(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
    }
上一篇下一篇

猜你喜欢

热点阅读