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
}