Leetcode 第32题 最长有效括号

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

示例 1:

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

示例 2:

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

解题思

通过栈的特性。


#![allow(unused_variables)]
fn main() {
pub fn longest_valid_parentheses(s: String) -> i32 {
    let mut stack:Vec<i32>=Vec::with_capacity(100);
    let mut carry=-1;
    s.bytes().enumerate().fold(0,|s,(i,x)|
        if x==b'('{
            stack.push(carry);
            carry=i as i32;
            s
        }else if let Some(z)=stack.pop(){
            carry=z;
            s.max(i as i32-z)
        }else{
            carry=i as i32;s
        }
    )
}
}